用bfs求一个无向图的起始点到最远点的距离
时间: 2024-04-09 22:33:11 浏览: 72
可以使用广度优先搜索(BFS)算法来求解无向图的起始点到最远点的距离。下面是一个使用BFS求解的示例代码:
```python
from collections import deque
def bfs(graph, start):
visited = set()
queue = deque([(start, 0)]) # 使用队列存储待访问的节点以及距离
while queue:
node, distance = queue.popleft()
visited.add(node)
# 遍历当前节点的邻居节点
for neighbor in graph[node]:
if neighbor not in visited:
queue.append((neighbor, distance + 1))
visited.add(neighbor)
return distance
# 示例图的邻接表表示
graph = {
'A': ['B', 'C'],
'B': ['A', 'D', 'E'],
'C': ['A', 'F'],
'D': ['B'],
'E': ['B', 'F'],
'F': ['C', 'E', 'G'],
'G': ['F']
}
start_node = 'A'
max_distance = bfs(graph, start_node)
print("起始点到最远点的距离:", max_distance)
```
在这个示例中,我们使用了一个字典来表示图的邻接表。字典的键表示节点,值是一个列表,其中包含与该节点相邻的节点。我们使用一个队列来存储待访问的节点和它们距离起始点的距离。通过不断从队列中取出节点并访问它们的邻居节点,直到队列为空,我们可以找到起始点到最远点的距离。
阅读全文