给定一个无向图,在此无向图中增加一个新顶点。 编程要求 输入 多组数据,每组m+2行。第一行有两个数字n和m,代表有n个顶点和m条边。顶点编号为1到n。第二行到第m+1行每行有两个数字h和k,代表边依附的两个顶点。第m+2行有一个数字f,代表新插入的顶点编号。当n和m都等于0时,输入结束。 输出 每组数据输出n+1行。为增加顶点后的邻接矩阵。每两个数字之间用空格隔开。
时间: 2024-03-03 21:50:20 浏览: 78
好的,我明白了你的问题。这是一个图论问题,需要用到邻接矩阵。我会为你提供一个 Python 代码示例来解决这个问题:
```python
while True:
n, m = map(int, input().split())
if n == 0 and m == 0:
break
adj = [[0] * (n+1) for _ in range(n+1)]
for i in range(m):
h, k = map(int, input().split())
adj[h][k] = 1
adj[k][h] = 1
f = int(input())
n += 1
adj.append([0] * n)
for i in range(n):
adj[i].append(0)
for i in range(1, n):
adj[f][i] = 1
adj[i][f] = 1
for row in adj:
print(' '.join(map(str, row)))
```
代码逻辑如下:
1. 循环读入多组数据,当 n 和 m 都等于 0 时,退出循环。
2. 根据顶点数 n 创建一个 n+1 行 n+1 列的邻接矩阵 adj。
3. 循环读入 m 条边,将邻接矩阵中对应位置的值设为 1。
4. 读入新插入的顶点编号 f,将顶点数 n 加 1,将邻接矩阵的行数和列数都增加 1,并将新增的行和列的值都初始化为 0。
5. 将新插入的顶点 f 与原有的所有顶点相连。
6. 循环输出邻接矩阵中的每一行。
希望这个代码可以帮助你解决问题!
阅读全文