public override List <string> floyd(string origen, string destino) { List <string> recorrido; Nodo centinela; Stack <Nodo> recorridos; recorridos = new Stack <Nodo>(); recorrido = new List <string>(); this.iniciaBanderaAristas(); centinela = base.BuscaNodo(origen); while (!centinela.Nombre.Equals(destino)) { if ((centinela.Nombre.Equals(origen) && !centinela.FataReccorer)) { break; } if (!this.nodoEnPila(centinela, recorridos)) { recorridos.Push(centinela); } centinela = MetodosAuxiliares.siguenteFloyd(centinela, ref recorridos, destino); } if (!centinela.Nombre.Equals(origen)) { foreach (Nodo nodo in recorridos) { recorrido.Add(nodo.Nombre); } recorrido.Reverse(); recorrido.Add(centinela.Nombre); } else { if (!origen.Equals(destino)) { recorrido.Clear(); recorrido.Add("No existe Camino"); } else { recorrido.Add(origen); } } return(recorrido); }