#include<bits/stdc++.h>
using namespace std;
int head[1000000];
struct number
{
int start,ver,next;
//起点,终点,下一条边。
}n[1000000];
int v[1000000],tot;
void add(int x,int y)
{
n[++tot].ver=y,n[tot].start=x;
n[tot].next=head[x],head[x]=tot;
//加入边;
}
void dfs(int x)
{
cout<<x<<" ";//输出当前读到的数
v[x]=1;//标记
for(int i=head[x];i;i=n[i].next)
{
int y=n[i].ver;
if(v[y])continue;
dfs(y);
}
}//深搜
void bfs()
{
memset(v,0,sizeof(v));
queue<int> q;
q.push(1);
v[1]=1;
while(q.size()>0)
{
int x=q.front();
q.pop();
for(int i=head[x];i;i=n[i].next)
{
int y=n[i].ver;
if(v[y]) continue;
v[y]=v[x]+1;
q.push(i);
}
}
}//上好的板子。
bool cmp(number x,number y)
{
if(x.start==y.start)
return x.ver>y.ver;
else return x.start<y.start;
}//快排qwq。
int main()
{
int nz,m;
cin>>nz>>m;
for(int i=0;i<m;i++)
{
int xx,yy;
cin>>xx>>yy;//读入边
add(xx,yy);//加入边
}
sort(n,n+m,cmp);//快排;
dfs(1);//从一开始深搜
cout<<endl;
bfs();
}
输出都不全QWQ