#include<iostream>
#include<vector>
#include<queue>
#include<algorithm>
using namespace std;
struct stu{
int a,b;
};
vector<int>x[100001];
vector<stu>f;
bool flag[100005]={0},flag2[100005]={0};
bool cmp(stu ff,stu fff)
{
if(ff.a==fff.a)
{
return ff.a<fff.a;
}
else
{
return ff.a<fff.a;
}
}
void dfs(int s)
{
flag[s]=1;
cout<<s<<" ";
for(int i=0;i<x[s].size();i++)
{
int len=f[x[s][i]].b;
if(!flag[len])
{
dfs(len);
}
}
}
void bfs(int s)
{
queue<int>q;
q.push(s);
cout<<s<<" ";
flag2[s]=1;
while(!q.empty())
{
int ben=q.front();
for(int i=0;i<x[ben].size();i++)
{
int len=f[x[ben][i]].b;
if(!flag2[len])
{
q.push(len);
cout<<len<<" ";
flag2[len]=1;
}
}
}
}
int main()
{
int n,m;
cin>>n>>m;
for(int i=0;i<m;i++)
{
int aa,bb;
cin>>aa>>bb;
f.push_back((stu){aa,bb});
}
sort(f.begin(),f.end(),cmp);
for(int i=0;i<m;i++)
{
x[f[i].a].push_back(i);
}
dfs(1);
cout<<endl;
bfs(1);
return 0;
}
我用DEVC++运行了一遍,dfs运行完成,但bfs只运行了一半,但样例是对的