dfs和bfs
简单记录一下实现方式。
代码
from collections import deque
def dfs(graph, selected, vet, res):
res.append(vet)
selected.add(vet)
for nvet in graph[vet]:
if nvet in selected:
continue
dfs(graph, selected, nvet, res)
def graph_dfs(graph, start_vet):
selected = set()
res = []
dfs(graph, selected, start_vet, res)
return res
def graph_bfs(graph, start_vet):
res = []
selected = set([start_vet])
dq = deque([start_vet])
while len(dq) > 0:
vet = dq.popleft()
res.append(vet)
for nvet in graph[vet]:
if nvet in selected:
continue
dq.append(nvet)
selected.add(nvet)
return res
n, m = map(int, input().split())
graph = [[] for _ in range(n+1)]
for i in range(m):
vet, nvet = map(int, input().split())
graph[vet].append(nvet)
start_vet = -1
for i in range(n+1):
if len(graph[i]) != 0 and start_vet == -1:
start_vet = i
graph[i].sort()
print(graph_dfs(graph, start_vet))
print(graph_bfs(graph, start_vet))