public Aresta(Vertice origem, Vertice destino, int peso) { this.Origem = origem; this.Destino = destino; this.Peso = peso; this.Visitado = false; }
public static Grafo Ler(string caminhoArquivo) { var arquivo = File.ReadAllLines(caminhoArquivo); var retorno = new Grafo(); var primeiraParte = true; foreach (var linha in arquivo) { if (linha.Equals("#")) { primeiraParte = false; continue; } if (primeiraParte) { var vertice = new Vertice(linha); retorno.AdicionaVertice(vertice); } else { var carac = linha.Split(' '); var tamanho = carac.Length; if (tamanho <= 0 || tamanho > 3) throw new Exception("Não foi possível identificar especificações da aresta no arquivo de entrada"); if (tamanho >= 2) { var origem = retorno.Vertices[carac[0]]; var destino = retorno.Vertices[carac[1]]; retorno.Adjacentes[origem.Id].Add(destino); retorno.Adjacentes[destino.Id].Add(origem); var aresta = new Aresta(origem, destino); if (tamanho > 2) aresta.Peso = Convert.ToInt16(carac[2]); retorno.AdicionaAresta(aresta); } } } return retorno; }
public void AdicionaVertice(Vertice vertice) { this.Vertices.Add(vertice.Id, vertice); this.Adjacentes.Add(vertice.Id, new List<Vertice>()); }