想要C语言代码深度优先搜索算法判断邻接矩阵表示的图是否为连通图
时间: 2023-07-23 13:21:04 浏览: 104
c语言实现的邻接表连通图深度优先遍历
3星 · 编辑精心推荐
好的,以下是C语言代码实现深度优先搜索算法判断邻接矩阵表示的图是否为连通图的方法:
```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 is_connected() {
for (int i = 0; i < n; i++) {
visited[i] = 0;
}
dfs(0); // 从第一个节点开始遍历
for (int i = 0; i < n; i++) {
if (!visited[i]) { // 存在未被访问的节点,说明不连通
return 0;
}
}
return 1;
}
int main() {
scanf("%d", &n);
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
scanf("%d", &graph[i][j]);
}
}
if (is_connected()) {
printf("The graph is connected.\n");
} else {
printf("The graph is not connected.\n");
}
return 0;
}
```
主要思路是使用深度优先搜索算法遍历图中的所有节点,如果所有节点都被访问过,则该图是连通图;否则,不是连通图。其中,visited数组记录节点是否已被访问,graph数组存储邻接矩阵,n表示节点数。
阅读全文