有一个有 n 个节点的有向图,节点按 0 到 n - 1 编号。graph由一个 索引从 0 开始 的 2D 整数数组 graph表示, graph[i]是与节点 i 相邻的节点的整数数组,这意味着从节点 i 到 graph[i]中的每个节点都有一条边。
graph = [[1,2],[2,3],[5],[0],[5],[],[]]
def dfs_complete(graph):
n = len(graph)
visited = [0]*n
def dfs(node):
# 判断节点是否被访问
if visited[node]!= 0:
return
# 标记当前节点已访问(为灰)
visited[node] = 1
# 遍历当前节点的出边
for neigh in graph[node]:
if visited[neigh]==0:
dfs(neigh)
# 所有关于这个节点上衍生的全被找到,标记当前节点结束
visited[node] = 2
return
for i in range(n):
if visited[i] == 0:
dfs(i)
print(visited,i)
dfs_complete(graph)
outp