public void AdicionaAresta(Aresta aresta) { this.Arestas.Add(aresta); this.ArestasDoVertice.Add(new Tuple<Vertice, Vertice>(aresta.Origem, aresta.Destino), aresta); var outra = new Aresta(aresta.Destino, aresta.Origem); this.Arestas.Add(outra); this.ArestasDoVertice.Add(new Tuple<Vertice, Vertice>(outra.Origem, outra.Destino), outra); }
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 RemoveAresta(Aresta aresta) { this.Arestas.Remove(aresta); this.Adjacentes[aresta.Origem.Id].Remove(aresta.Destino); this.Adjacentes[aresta.Destino.Id].Remove(aresta.Origem); }