示例#1
0
 public Boolean Consulta(int elementoA, int elementoB)
 {
     elementos[0].setCor(VISITADO);
     // Q é a lista que contém os vértices que serão verificados. São os vértices que são "Alcançados" pelo elementoA
     Q = new List <Elemento>();
     AdicionaElemento(Q, elementos[0]);
     for (int v = 0; v < elementos.Count; v++)
     {
         if (elementos[v].getNumero().Equals(elementoA))
         {
             while (Q.Count != 0)
             {
                 // Pega e remove o primeiro elemento de Q
                 Elemento u = RemoveElementoDeQ();
                 // pega as conexões existentes em Q
                 List <Elemento> conexoesLista = u.getConexoes();
                 for (int a = 0; a < conexoesLista.Count; a++)
                 {
                     if (conexoesLista[a].getNumero().Equals(elementoB))
                     {
                         // Se houver uma conexão direta ou indireta retorna true
                         return(true);
                     }
                     // Verifica se o o elemento já foi verificado
                     if (NAO_VISITADO.Equals(conexoesLista[a].getCor()))
                     {
                         AdicionaElemento(Q, conexoesLista[a]);
                         conexoesLista[a].setCor(VISITADO);
                     }
                 }
                 u.setCor(VISITADO_NOS);
             }
             break;
         }
     }
     return(false);
 }