微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

图中的 DFS 遍历

如何解决图中的 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 举报,一经查实,本站将立刻删除。