输出无向图的给定起点的先广序列。 输入格式: 输入第一行给出三个正整数,分别表示无向图的节点数N(1<N≤10)、边数M(≤50)和探索起始节点编号S(节点从1到N编号)。 随后的M行对应M条边,每行给出一对正整数,分别是该条边直接连通的两个节点的编号。 输出格式: 输出从S开始的无向图的先广搜索序列,用一个空格隔开,最后也有一个空格;如果为非连通图,再在结尾处另起一行输出一个0,表示此图非连通。 由于广度优先遍历的节点序列是不唯一的,为了使得输出具有唯一的结果,我们约定以表头插入法构造邻接表。 输入样例: 6 8 2 1 2 2 3 3 4 4 5 5 6 6 4 3 6 1 5 输出样例: 2 3 1 6 4 5
时间: 2024-03-12 17:50:24 浏览: 129
以下是Python代码实现:
```python
from collections import deque
# 读入图的信息
n, m, s = map(int, input().split())
graph = [[] for _ in range(n + 1)]
for i in range(m):
a, b = map(int, input().split())
graph[a].append(b)
graph[b].append(a)
# 广度优先搜索
q = deque([s])
visited = [False] * (n + 1)
visited[s] = True
order = [s]
while q:
node = q.popleft()
for nei in graph[node]:
if not visited[nei]:
visited[nei] = True
order.append(nei)
q.append(nei)
# 输出遍历顺序
if len(order) == n:
print(' '.join(map(str, order)))
else:
print('0')
```
首先读入图的信息,并以邻接表的形式存储在`graph`中。然后,从起始节点`s`开始进行广度优先搜索,记录搜索过程中的遍历顺序,存储在`order`中。最后,如果`order`的长度等于图的节点数`n`,则说明该图是连通的,输出遍历顺序;否则,输出0表示该图非连通。
阅读全文