图的深度优先遍历Cpp代码
时间: 2023-10-30 20:11:14 浏览: 74
以下是图的深度优先遍历的C++代码实现:
```cpp
#include<iostream>
#include<vector>
using namespace std;
const int MAXN = 100; // 最大顶点数
vector<int> G[MAXN]; // 邻接表存储图
bool vis[MAXN]; // 标记是否已访问
// 深度优先遍历函数
void dfs(int u){
vis[u] = true; // 标记已访问
cout << u << " "; // 输出当前节点
for(int i=0; i<G[u].size(); i++){
int v = G[u][i];
if(!vis[v]) dfs(v); // 如果该节点未访问,则继续遍历
}
}
int main(){
int n, m; // n为节点数,m为边数
cin >> n >> m;
for(int i=0; i<m; i++){
int u, v;
cin >> u >> v;
G[u].push_back(v); // 存储边
G[v].push_back(u); // 无向图需要反向再存一次
}
for(int i=1; i<=n; i++){
if(!vis[i]) dfs(i); // 若该节点未访问,则进行深度优先遍历
}
return 0;
}
```
其中,`G`数组为邻接表存储图,`vis`数组为标记数组,`dfs`函数为深度优先遍历函数。在`main`函数中,先输入节点数和边数,并将边存储到邻接表中。然后从未访问的节点开始,进行深度优先遍历。
阅读全文