第三个点一直过不了,反复看了几遍没看出问题,求大佬指教
#include<bits/stdc++.h>
using namespace std;
vector<vector<int>> gr;
int n,m;
int rd[1000010];
bool visit[1000050];
void dfs(int v){
visit[v]=true;
cout<<v<<' ';
for(int i=0;i<gr[v].size();i++){
if(!visit[gr[v][i]]){
dfs(gr[v][i]);
}
}
}
void dfvisit(int n){
for(int i=1;i<=n+2;i++){
visit[i]=false;
}
for(int i=1;i<=n;i++){
if(!visit[i]){
dfs(i);
}
}
}
int main(){
cin>>n>>m;
int a,b;
gr.resize(n+1);
for(int i=0;i<m;i++){
cin>>a>>b;
gr[a].push_back(b);
rd[b]++;
}
for(int i=1;i<=n;i++){
sort(gr[i].begin(),gr[i].end());
}
dfvisit(n);
cout<<endl;
for(int i=0;i<n+1;i++){
visit[i]=false;
}
queue<int> bdf;
int u;
for(int i=1;i<=n;i++){
if(!visit[i]){
visit[i]=true;
cout<<i<<' ';
bdf.push(i);
while(!bdf.empty()){
u=bdf.front();
bdf.pop();
for(int k=0;k<gr[u].size();k++){
if(!visit[gr[u][k]]){
visit[gr[u][k]]=true;
cout<<gr[u][k]<<' ';
bdf.push(gr[u][k]);
}
}
}
}
}
return 0;
}