代码如下
#include<bits/stdc++.h>
using namespace std;
int n,m,q[100100];bool b[100100];
vector<int>a[100100];
void dfs(int k)
{
cout<<k<<" ";
b[k]=true;
for(int i=1;i<a[k].size();i++)
{
if(!b[a[k][i]])
dfs(a[k][i]);
}
}
int main()
{
cin>>n>>m;
for(int i=1;i<=n;i++)
{
a[i].push_back(0);
}
for(int i=1;i<=m;i++)
{
int u,v;cin>>u>>v;
a[u].push_back(v);
}
for(int i=1;i<=n;i++)
{
sort(a[i].begin(),a[i].end());
// cout<<"i="<<i<<" ";
// for(int j=1;j<a[i].size();j++)
// {
// cout<<a[i][j]<<":";
// }cout<<endl;
}
dfs(1);
cout<<endl;
memset(b,false,sizeof(b));
for(int i=1;i<=n;i++)
{
sort(a[i].begin(),a[i].end());
// cout<<"i="<<i<<" ";
// for(int j=1;j<a[i].size();j++)
// {
// cout<<a[i][j]<<":";
// }cout<<endl;
}
int t=1,h=1;
q[t++]=1;
b[1]=true;
cout<<1<<" ";
while(h<t)
{
for(int i=1;i<a[h].size();i++)
{
int xx=a[h][i];
if(b[xx])continue;
b[xx]=true;
cout<<xx<<" ";
q[t++]=xx;
}
h++;
}
}