from collections import deque
graph = graph
start = start
visited = set() # 储存已经访问过的节点
queue = deque([start]) # 创建一个队列并将起点加入其中
visited.add(start) # 将起点标记为已访问
while queue: # 当队列不为空时执行循环
cur = queue.popleft() # 取出队首元素
print(cur) # 访问当前节点
if cur in graph:
for neighbor in graph[cur]: # 遍历当前节点的所有相邻节点
if neighbor not in visited: # 如果相邻节点未被访问过
queue.append(neighbor) # 将其加入队列尾部
visited.add(neighbor) # 并将其标记为已访问过
DFS模板
visited = []
def dfs(node):
"""深度优先搜索遍历树/图的函数"""
# 先将当前节点标记为已访问,并进行相关操作
print(node)
visited.append(node)
# 针对当前节点的所有邻居/子节点进行递归
if node not in graph:
return
else:
for neighbor in graph[node]:
# 判断该节点是否被访问过,如果没被访问过就递归访问它
if neighbor not in visited:
dfs(neighbor)
# 在主程序中调用dfs函数并传入起始节点
dfs(node)
DP模板
N = '列数'
M = '行数'
dp = [[0] * (N+1) for _ in range(M+1)]
for i in range(1, M+1):
for j in range(1, N+1):
if '判断条件':
dp[i][j] = ma