给一个有 n 个结点的有向无环图,找到所有从 0 到 n-1 的路径并输出(不要求按顺序)
二维数组的第 i 个数组中的单元都表示有向图中 i 号结点所能到达的下一些结点(译者注:有向图是有方向的,即规定了 a→b 你就不能从 b→a )空就是没有下一个结点了。
from typing import *
class Solution:
def __init__(self):
self.res = []
self.visited = None
self.graph = None
def allPathsSourceTarget(self, graph: List[List[int]]) -> List[List[int]]:
self.visited = [False] * len(graph)
self.graph = graph
self.dfs(len(graph), [], 0)
return self.res
def dfs(self, N, path, i):
if i == N - 1:
tem_path = path[:]
tem_path.append(i)
self.res.append(tem_path)
self.visited[i] = True
path.append(i)
for j in self.graph[i]:
if not self.visited[j]:
self.dfs(N, path, j)
path.pop()
self.visited[i] = False