输入多组邻接矩阵判断是否连通图c语言代码
时间: 2023-07-16 09:13:32 浏览: 100
判断图是否连通
以下是判断是否为连通图的C语言代码,可以输入多组邻接矩阵进行判断:
```c
#include <stdio.h>
#define MAXN 100
int n; // 图的结点数
int g[MAXN][MAXN]; // 存储邻接矩阵
int vis[MAXN]; // 标记结点是否被访问过
void dfs(int u) { // 深度优先遍历
vis[u] = 1;
for (int v = 0; v < n; v++) {
if (g[u][v] && !vis[v]) {
dfs(v);
}
}
}
int main() {
while (scanf("%d", &n) == 1) {
// 输入邻接矩阵
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
scanf("%d", &g[i][j]);
}
}
// 判断是否为连通图
int cnt = 0; // 连通块数量
for (int i = 0; i < n; i++) {
if (!vis[i]) {
dfs(i);
cnt++;
}
}
if (cnt == 1) {
printf("This is a connected graph.\n");
} else {
printf("This is not a connected graph.\n");
}
// 清空标记数组
for (int i = 0; i < n; i++) {
vis[i] = 0;
}
}
return 0;
}
```
其中,输入格式为首先输入图的结点数 $n$,然后输入 $n$ 行 $n$ 列的邻接矩阵。输出格式为如果是连通图则输出 `This is a connected graph.`,否则输出 `This is not a connected graph.`。
阅读全文