根据输入信息创建图,采用邻接表的形式存储该图,并用广度优先遍历算法遍历该图,输出遍历序列。【输入形式】 第一行为图的结点个数n,第二行为图的顶点数据,之后的n行为邻接矩阵的内容,每行n个数表示。其中A[i][j]=1表示两个结点邻接,而A[i][j]=0表示两个结点无邻接关系。
时间: 2024-05-07 20:20:32 浏览: 109
新建 DOC 文档_实现图的邻接矩阵和邻接表存储_doc_图的遍历算法_
5星 · 资源好评率100%
以下是Python实现代码:
```python
from collections import deque
# 创建邻接表
def create_adj_list(matrix):
adj_list = {}
n = len(matrix)
for i in range(n):
adj_list[i] = []
for j in range(n):
if matrix[i][j] == 1:
adj_list[i].append(j)
return adj_list
# 广度优先遍历
def bfs(adj_list, start):
visited = set()
queue = deque([start])
bfs_seq = []
while queue:
vertex = queue.popleft()
if vertex not in visited:
visited.add(vertex)
bfs_seq.append(vertex)
for neighbor in adj_list[vertex]:
if neighbor not in visited:
queue.append(neighbor)
return bfs_seq
# 主程序
n = int(input())
vertex_data = input().split()
matrix = []
for i in range(n):
row = list(map(int, input().split()))
matrix.append(row)
adj_list = create_adj_list(matrix)
start = 0 # 从第一个结点开始遍历
bfs_seq = bfs(adj_list, start)
print('遍历序列:', end='')
for vertex in bfs_seq:
print(vertex_data[vertex], end=' ')
```
输入示例:
```
5
A B C D E
0 1 1 0 0
1 0 1 1 0
1 1 0 0 1
0 1 0 0 1
0 0 1 1 0
```
输出示例:
```
遍历序列:A B C D E
```
阅读全文