コード例 #1
0
        // Busca a aresta de menor peso
        private static Aresta FindArestaMenorPeso()
        {
            int    pesoMenor       = 1000;
            Aresta arestaMenorPeso = null;

            grafoOrigem.LimparCorVertices();

            foreach (Vertice vertice in grafoOrigem.vertices)
            {
                foreach (Aresta aresta in vertice.adjacentes)
                {
                    if (aresta.peso <= pesoMenor && aresta.vertice.cor == "BRANCO")
                    {
                        if (aresta.peso == pesoMenor)
                        {
                            Aresta arestaEscolhida = Prim.ArestasComMesmoPeso(arestaMenorPeso, verticeOrigem, aresta, vertice);
                            pesoMenor       = arestaEscolhida.peso;
                            arestaMenorPeso = arestaEscolhida;
                        }
                        else
                        {
                            pesoMenor       = aresta.peso;
                            arestaMenorPeso = aresta;
                            verticeOrigem   = vertice;
                        }
                    }
                }
                vertice.cor = "VERDE";
            }

            return(arestaMenorPeso);
        }
コード例 #2
0
        private static bool HasCiclo(Vertice verticeOrigem, Aresta aresta)
        {
            arvore.LimparCorVertices();

            return(VerificaArestaCiclo(verticeOrigem, aresta));
        }