题目描述 给定一个有N个顶点和E条边的无向图,请用BFS打印出搜索结果。从编号最小的顶点出发。 输入 第一行输入2个整数n,m。n表示n个顶点,m表示m条边(n<=20,m<=20)。 接着输入m行,每行2个整数u,v,表示u,v这2个点连接成一条边。 输出 输出bfs的结果 中间空格分隔,结尾无空格。(注:搜索的顺序按输入的顺序搜索) 样例输入 Copy 5 4 1 2 2 3 3 4 5 1 样例输出 Copy 1 2 5 3 4Java
时间: 2023-06-11 19:09:41 浏览: 82
数据结构-图的遍历操作
以下是Python的实现代码:
```python
from collections import deque
n, m = map(int, input().split())
adj = [[] for _ in range(n + 1)]
for i in range(m):
u, v = map(int, input().split())
adj[u].append(v)
adj[v].append(u)
visited = [False] * (n + 1)
q = deque()
q.append(1) # 从编号最小的顶点1开始搜索
while q:
u = q.popleft()
if visited[u]:
continue
visited[u] = True
print(u, end=' ')
for v in adj[u]:
q.append(v)
```
代码思路:
首先,读入图的信息并存储为邻接表。然后,设置一个 `visited` 数组表示每个顶点是否已经被访问过,以及一个队列 `q` 用于进行 BFS 搜索。按照题目要求,从编号最小的顶点1开始搜索,因此将1入队。接下来,从队列中取出一个顶点u,如果它已经被访问过,则跳过;否则,将它标记为已访问,输出它的编号,并将与它相邻的未访问过的顶点入队。不断重复这个过程,直到队列为空。
阅读全文