def find_path(G, s, t): def quedan_vecinos(v): for u in v.lista_vecinos: if u.color == 'W': return True return False for nodo in G: nodo.padre = None if nodo.color == 'G': nodo.color = 'W' s.color = 'G' stack = Lista() stack.append(s) while stack: u = stack.pop() for nodo in u.lista_vecinos: if nodo.color == 'W': nodo.color = 'G' nodo.padre = u stack.append(nodo) print(quedan_vecinos(nodo)) if not quedan_vecinos(nodo): nodo.color = 'B' return backtrack(t)
def dfs(v): caminos = Lista() for nodo in G: nodo.padre = None stack = Lista() v.visto = True stack.append(v) while stack: u = stack.pop() for w in u.lista_vecinos: if not w.visto and conected(w, u): w.visto = True w.padre = u stack.append(w) camino = backtrack(u) if len(camino) > 1: caminos.append(backtrack(u)) return caminos