不知道为啥和题解开的变量一样多还爆了,求调,但是不要贴题解谢谢(想抄题解直接去了)
#include <bits/stdc++.h>
using namespace std;
int n,m;
vector<int>graph[100001];
int t1,t2;
bool flag1[100001],flag2[100001];
void dfs(int x){
if(graph[x].empty() || flag1[x]){
if(!flag1[x]){
flag1[x] = true;
printf("%d ", x);
}
return;
}
printf("%d ", x);
for(int i = 0; i < graph[x].size(); i++){
dfs(graph[x][i]);
}
flag1[x] = true; // Move this statement outside the loop
return;
}
queue<int>que;
void bfs(int x){
if(!flag2[x]){
printf("%d ",x);flag2[x]=true;
}
if(graph[x].size()==0){
return;
}
que.push(x);
while(!que.empty()){
for(int i=0;i<graph[que.front()].size();i++){
if(!flag2[graph[que.front()][i]]){
printf("%d ",graph[que.front()][i]);
que.push(graph[que.front()][i]);
flag2[graph[que.front()][i]]=true;
}
}
que.pop();
}
return;
}
signed main(){
cin>>n>>m;
for(int i=0;i<m;i++){
scanf("%d %d",&t1,&t2);
graph[t1].push_back(t2);
}
for(int i=1;i<=n;i++){
sort(graph[i].begin(),graph[i].end());
}
// for(int i=1;i<=n;i++){
dfs(1);
// }
cout<<endl;
// for(int i=1;i<=n;i++){
bfs(1);
// }
return 0;
}