无向图判断图中所有顶点是否都连通c语言
时间: 2023-11-09 21:06:44 浏览: 141
判断无向图中所有顶点是否都连通,可以使用深度优先搜索(DFS)或广度优先搜索(BFS)来实现。以下是使用DFS实现的示例代码:
```c
#include <stdio.h>
#define V 5 // 图中顶点的数量
void DFS(int graph[V][V], int visited[], int v) {
visited[v] = 1;
for (int i = 0; i < V; i++) {
if (graph[v][i] && visited[i] == 0)
DFS(graph, visited, i);
}
}
int isConnected(int graph[V][V]) {
int visited[V];
for (int i = 0; i < V; i++)
visited[i] = 0;
DFS(graph, visited, 0);
for (int i = 0; i < V; i++) {
if (visited[i] == 0)
return 0;
}
return 1;
}
int main() {
int graph[V][V] = {{0, 1, 0, 1, 0},
{1, 0, 1, 0, 0},
{0, 1, 0, 0, 1},
{1, 0, 0, 0, 1},
{0, 0, 1, 1, 0}};
if (isConnected(graph))
printf("All vertices are connected.\n");
else
printf("Not all vertices are connected.\n");
return 0;
}
```
代码中给出了一个5个顶点的无向图的邻接矩阵表示,并通过DFS判断所有顶点是否都连通。如果所有顶点都被访问到了,则说明所有顶点都连通。如果存在未被访问的顶点,则说明不是所有顶点都连通。
阅读全文