python试题正文 题目描述 判定一个无向图是否为连通图。 连通图的定义如下:图中任意两个顶点之间都是连通的,即存在路径。 若是连通图,输出‘Yes’;若不是连通图,输出其连通分量的个数。 输入格式 第一行为两个整数n和m, 分别代表图中顶点数和边数。 接下来m行,有两个整数u和v,分别表示一条边的两个顶点编号(u, v均从1开始依次编号)。 输出格式 一行,若为连通图,输出‘Yes’; 否则为一个整数,代表连通分量的个数。 例如: 输入 结果 5 4 1 2 1 3 4 5 2 4 Yes 5 3 1 2 1 3 4 5 2 5 0 5
时间: 2024-03-26 20:40:48 浏览: 52
以下是这道题的Python代码实现,其中使用了深度优先搜索(DFS)算法来遍历无向图,并统计连通分量的数量:
```python
def dfs(u, visited, g):
visited[u] = True
for v in g[u]:
if not visited[v]:
dfs(v, visited, g)
n, m = map(int, input().split())
g = [[] for _ in range(n)]
for i in range(m):
u, v = map(int, input().split())
g[u - 1].append(v - 1)
g[v - 1].append(u - 1)
visited = [False] * n
cnt = 0
for i in range(n):
if not visited[i]:
dfs(i, visited, g)
cnt += 1
if cnt == 1:
print("Yes")
else:
print(cnt)
```
输入样例1:
```
5 4
1 2
1 3
4 5
2 4
```
输出样例1:
```
Yes
```
输入样例2:
```
5 3
1 2
1 3
4 5
```
输出样例2:
```
2
```
输入样例3:
```
5 1
2 5
```
输出样例3:
```
4
```
阅读全文