如何解决图中的 DFS 遍历
我正在尝试使用递归调用进行 dfs 遍历,My Graph 和 vector<int>visited
是全局变量。 num_v
变量对应于顶点数,num_e
对应于我尝试在 main 中调用两个 DFS 调用的边数,但我的输出与第一种情况下的正确 DFS 顺序匹配。它为其他人提供了不正确的信息,请帮助我在实施过程中出错的地方。
样本输入:第一行是顶点数和边数。接下来,每条线都是两点之间的有向节点。
5 5
1 2
2 4
4 5
5 3
1 3
预期输出:
1 2 4 5 3
2 4 5 3
1 2 4 5 3
2
代码:
#include<iostream>
#include<vector>
#include<stack>
using namespace std;
int mx=1e5;
//int num_v;
vector<vector<int>>Graph(mx);
vector<int>visited;
void dfs(int v,vector<int>&vec){
visited[v]=1;
vec.push_back(v);
for(int neigh:Graph[v]){
if(visited[neigh]!=1){
dfs(neigh,vec);
}
}
}
int main(){
int num_v;int num_e;
cin>>num_v>>num_e;
visited.resize(num_v + 1);
for(int i=0;i<num_e;i++){
int u,v;
cin>>u>>v;
Graph[u].push_back(v);
}
vector<int>vec;
dfs(1,vec);
for(auto x:vec){
cout<<x<<" ";
}
visited.clear();
cout<<endl;
vector<int>tt;
dfs(2,tt);
for(auto y:tt){
cout<<y<<" ";
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。