用C语言写连通性分析的代码
时间: 2023-05-24 15:01:09 浏览: 112
连通性问题 C语言
3星 · 编辑精心推荐
可以使用深度优先搜索或广度优先搜索来实现连通性分析。下面是一个简单的深度优先搜索示例代码:
```c
#include <stdio.h>
#define MAX_SIZE 100
int visited[MAX_SIZE]; // 记录节点是否被访问
int graph[MAX_SIZE][MAX_SIZE]; // 图的邻接矩阵表示
int n; // 图的节点数
void dfs(int node) {
visited[node] = 1;
for (int i = 0; i < n; i++) {
if (graph[node][i] && !visited[i]) { // 如果有边相连且未被访问
dfs(i); // 继续搜索
}
}
}
int main() {
// 读入图的节点数和边数
int m;
scanf("%d%d", &n, &m);
// 读入每条边的起点和终点,并存入邻接矩阵
for (int i = 0; i < m; i++) {
int u, v;
scanf("%d%d", &u, &v);
graph[u][v] = graph[v][u] = 1; // 无向图需要两个方向都标记
}
// 搜索每个未被访问的节点,统计连通分量数量
int count = 0;
for (int i = 0; i < n; i++) {
if (!visited[i]) {
dfs(i);
count++;
}
}
printf("该图有 %d 个连通分量。\n", count);
return 0;
}
```
如果需要判断两个节点是否连通,可以在深度优先搜索的过程中记录下每个节点的联通分量编号,最后判断两个节点的编号是否相同即可。
阅读全文