请使用c++写一个深度优先搜索
时间: 2024-05-01 10:21:08 浏览: 81
好的,以下是一个用 C 语言实现的深度优先搜索的示例代码:
```
#include <stdio.h>
#include <stdbool.h>
#define MAX_VERTICES 100
int n; // 图中的顶点数
bool visited[MAX_VERTICES]; // 记录顶点是否被访问过
int adjacency_matrix[MAX_VERTICES][MAX_VERTICES]; // 邻接矩阵
void dfs(int u) {
visited[u] = true; // 标记顶点 u 为已访问
printf("%d ", u); // 访问顶点 u
// 对于每一个与顶点 u 相邻的未访问顶点 v,递归地对 v 进行 dfs
for (int v = 0; v < n; v++) {
if (adjacency_matrix[u][v] == 1 && !visited[v]) {
dfs(v);
}
}
}
int main() {
// 读入图中的顶点数 n 和邻接矩阵
scanf("%d", &n);
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
scanf("%d", &adjacency_matrix[i][j]);
}
}
// 从顶点 0 开始进行 dfs
dfs(0);
return 0;
}
```
上面的代码实现了一个图的深度优先搜索。邻接矩阵 `adjacency_matrix` 用于存储图中每一对顶点之间的关系(是否存在一条边)。在 `dfs` 函数中,我们递归地访问每一个与当前顶点相邻的未访问顶点,并在访问完成后标记该顶点为已访问。
阅读全文