Exemple #1
0
        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;
        }
Exemple #3
0
 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);
 }