实现图的邻接矩阵的存储 编写程序,输入顶点的个数、边的个数、每个顶点的值、 每一条边及其权值,建立带权无向图 G 的邻接矩阵,并输出其邻接矩阵。 输入格式: 第一行两个整数分别表示图的顶点个数 m、边的个数 n,两个整数之间以空格分隔; 第二行的字符序列分别表示图的 m 个顶点的数据(为简单,每个顶点的数据为一个字符); n 行数据,每行数据表示图的一条边的信息,每条边依附的两个顶点的值以及这条边的权 值。
时间: 2024-02-28 19:55:12 浏览: 91
图的邻接矩阵存储代码
3星 · 编辑精心推荐
以下是 Python 代码实现:
```python
class Graph:
def __init__(self, vertices):
self.vertices = vertices
self.adj_matrix = [[0] * vertices for _ in range(vertices)]
def add_edge(self, u, v, weight):
self.adj_matrix[u][v] = weight
self.adj_matrix[v][u] = weight
def print_adj_matrix(self):
for row in self.adj_matrix:
print(row)
m, n = map(int, input().split())
vertex_data = input().split()
g = Graph(m)
for i in range(n):
u, v, weight = input().split()
u = vertex_data.index(u)
v = vertex_data.index(v)
weight = int(weight)
g.add_edge(u, v, weight)
g.print_adj_matrix()
```
首先输入图的顶点个数 `m` 和边的个数 `n`。然后输入顶点的数据 `vertex_data`,用一个字符序列表示。
接着依次输入每条边的信息,包括两个顶点的值和这条边的权值。在添加边的时候,根据输入的顶点值找到对应的顶点序号,然后调用 `add_edge` 方法添加边。
最后调用 `print_adj_matrix` 方法打印邻接矩阵。
示例输入:
```
5 7
A B C D E
A B 1
A C 2
A E 3
B C 4
B D 5
B E 6
C D 7
```
示例输出:
```
[0, 1, 2, 0, 3]
[1, 0, 4, 5, 6]
[2, 4, 0, 7, 0]
[0, 5, 7, 0, 0]
[3, 6, 0, 0, 0]
```
其中,矩阵的第 $i$ 行第 $j$ 列的元素表示顶点 $i$ 和顶点 $j$ 之间的边权值。如果两个顶点之间没有边,则为 $0$。
阅读全文