样例和第一个点过了,没有找到明显逻辑错误
#include<bits/stdc++.h>
#define N 100010
using namespace std;
std::vector<int>g[N];
bool vis[N];
int m,n;
void add(int u,int v){
g[u].push_back(v);
}
void dfs(int pos){
printf("%d ",pos);
for(int i=0;i<g[pos].size();i++){
int point=g[pos][i];
if(vis[point])continue;
vis[point]=true;
dfs(point);
}
return;
}
void bfs(int pos){
std::queue<int>q;
q.push(pos);
printf("%d ",pos);
vis[pos]=true;
while(!q.empty()){
int f=q.front();
for(int i=0;i<g[f].size();i++){
int point=g[f][i];
if(vis[point])continue;
vis[point]=true;
q.push(point);
printf("%d ",point);
}
q.pop();
}
return;
}
int main(){
cin>>n>>m;
for(int i=1;i<=m;i++){
int u,v;
scanf("%d%d",&u,&v);
add(u,v);
}
for(int i=1;i<=n;i++)sort(g[i].begin(),g[i].end());
dfs(1);
printf("\n");
memset(vis,false,sizeof(vis));
bfs(1);
return 0;
}