예제 #1
0
        //-----Função que remove uma aresta do grafo.
        public void Remover_Aresta(Vertice cidade, Vertice cidadeAdj, int aux)
        {
            if (numArestas > 0)
            {
                A = new Aresta();

                //-----Percorrendo a lista de adjacências dos vértices para exluir as arestas.
                foreach (var x in cidade.ListaAdj)
                {
                    if (x.VerticeAdj == cidadeAdj)
                    {
                        A = x;
                        break;
                    }
                }

                //-----Removendo a aresta da lista de adjacências do vértice.
                cidade.ListaAdj.Remove(A);
                cidade.Grau--;
                aux++;

                //-----Já que o grafo é não direcionado, é necessário excluir a aresta na lista de adjacências dos dois vértices.
                if (aux < 2)
                {
                    Remover_Aresta(cidadeAdj, cidade, aux);
                }
                else
                {
                    numArestas--;
                }
            }
        }
예제 #2
0
        //-----Função que insere uma aresta no grafo.
        public void Inserir_Aresta(Vertice cidade, Vertice cidadeAdj, double distancia, int aux)
        {
            A = new Aresta();

            A.ID         = _IDA;
            A.VerticeAdj = cidadeAdj;
            A.Peso       = distancia;

            //-----Adicionando aresta na lista de adjacências de dois vértices (Grafo não direcionado).
            cidade.ListaAdj.Add(A);
            cidade.Grau++;
            aux++;

            //-----Já que o grafo é não direcionado, é necessário inserir a aresta na lista de adjacências dos dois vértices.
            if (aux < 2)
            {
                Inserir_Aresta(cidadeAdj, cidade, distancia, aux);
            }
            else
            {
                _IDA++;
                numArestas++;
            }
        }