Пример #1
0
 public Aresta(Vertice origem, Vertice destino, int peso)
 {
     this.Origem = origem;
     this.Destino = destino;
     this.Peso = peso;
     this.Visitado = false;
 }
Пример #2
0
        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;
        }
Пример #3
0
 public void AdicionaVertice(Vertice vertice)
 {
     this.Vertices.Add(vertice.Id, vertice);
     this.Adjacentes.Add(vertice.Id, new List<Vertice>());
 }