def dfs(v, visited, path, adj_matrix):
visited[v] = True
path.append(v)
for w in range(len(adj_matrix)):
if adj_matrix[v][w] != 0 and not visited[w]:
dfs(w, visited, path, adj_matrix)
return path
from collections import deque
def bfs(start, adj_matrix):
visited = [False] * len(adj_matrix)
queue = deque()
queue.append(start)
visited[start] = True
path = []
while queue:
v = queue.popleft()
path.append(v)
for w in range(len(adj_matrix)):
if adj_matrix[v][w] != 0 and not visited[w]:
queue.append(w)
visited[w] = True
return path
# 示例输入
adj_matrix = [
[0, 1, 1, 0, 0],
[1, 0, 0, 1, 1],
[1, 0, 0, 0, 0],
[0, 1, 0, 0, 0],
[0, 1, 0, 0, 0]
]
# 深度优先搜索
start_vertex = 0
visited = [False] * len(adj_matrix)
dfs_path = dfs(start_vertex, visited, [], adj_matrix)
print("DFS路径:", dfs_path)
# 广度优先搜索
bfs_path = bfs(start_vertex, adj_matrix)
print("BFS路径:", bfs_path)