/// <summary> /// FUNÇÃO PARA INCLUI UMA CONEXAO ENTRE DOIS VERTICES EXISTENTES NO GRAFO /// </summary> /// <param name="cidadeIn"></param> /// <param name="cidadeFim"></param> public void IncluirConexao(string cidadeIn, string cidadeFim) { Vertice vertice = Inicio; Aresta nova = new Aresta(); while (!vertice.Cidade.Trim().ToLower().Equals(cidadeIn.Trim().ToLower())) { vertice = vertice.Proximo; } vertice.Grau++; nova.Proxima = vertice.Adjacentes; vertice.Adjacentes = nova; nova.Destino = cidadeFim; nova = new Aresta(); vertice = Inicio; while (!vertice.Cidade.Trim().ToLower().Equals(cidadeFim.Trim().ToLower())) { vertice = vertice.Proximo; } vertice.Grau++; nova.Proxima = vertice.Adjacentes; vertice.Adjacentes = nova; nova.Destino = cidadeIn; }
/// <summary> /// FUNÇÃO PARA EXPLORAR AS ARESTAS DE UM VERTICE /// </summary> /// <param name="aresta"></param> /// <param name="cidade"></param> /// <returns></returns> public bool ExplorarAresta(Aresta aresta, string cidade) { while (aresta != null) { if (aresta.Destino.Trim().ToLower().Equals(cidade.Trim().ToLower())) { return(true); } aresta = aresta.Proxima; } return(false); }
/// <summary> /// REALIZA A BUSCA EM LARGURA NO GRAFO /// </summary> /// <param name="cidade"></param> /// <returns></returns> public bool BuscaLargura(string cidade, string cidadeInicio) { DesmarcarVertices(); Fila fila = new Fila(); Vertice verticeInicial = BuscaCidade(cidadeInicio); fila.ColocarFila(verticeInicial); bool encontrou = false; while (!fila.Vazio()) { Vertice aux = fila.BuscaPrimeiro(); Aresta auxA = aux.Adjacentes; if (!aux.Status) { Console.Write(aux.Cidade + ", "); while (auxA != null) { if (aux.Cidade.Trim().ToLower().Equals(cidade.Trim().ToLower())) { encontrou = true; } fila.ColocarFila(BuscaCidade(auxA.Destino)); auxA = auxA.Proxima; } aux.Status = true; } else { if (aux.Cidade.Trim().ToLower().Equals(cidade.Trim().ToLower())) { encontrou = true; } } fila.RemoverFila(); aux = fila.BuscaPrimeiro(); } return(encontrou); }