判断无向图的连通性,图用邻接矩阵表示,c语言
时间: 2023-08-16 10:06:59 浏览: 385
可以使用深度优先搜索(DFS)或广度优先搜索(BFS)来判断无向图的连通性。以下是使用DFS的实现代码:
```c
#define MAX_N 100 // 最大节点数
int G[MAX_N][MAX_N]; // 邻接矩阵
int vis[MAX_N]; // 标记数组
// DFS遍历图
void dfs(int u) {
vis[u] = 1; // 标记当前节点已经访问过
for (int v = 0; v < MAX_N; v++) {
if (G[u][v] && !vis[v]) { // 如果u和v之间有边,并且v未被访问过
dfs(v); // 递归访问v
}
}
}
// 判断图是否连通
int is_connected(int n) { // n为节点数
memset(vis, 0, sizeof(vis)); // 初始化标记数组
dfs(0); // 从节点0开始遍历
for (int i = 0; i < n; i++) {
if (!vis[i]) { // 如果存在未被访问过的节点
return 0; // 返回不连通
}
}
return 1; // 否则返回连通
}
```
在上面的代码中,`dfs`函数通过递归遍历图中与当前节点相邻的所有未被访问过的节点,并将它们标记为已访问。`is_connected`函数首先调用`dfs`函数从节点0开始遍历整个图,然后检查是否存在未被访问过的节点,如果存在则说明图不连通,否则说明图连通。
阅读全文