全WA
#include<bits/stdc++.h>
using namespace std;
const int N=1e5+10;
struct edge{
int u,v;
};
vector<int> g[N];
vector<edge> s;
int n,m;
bool vis[N]={0};
bool cmp(edge x,edge y){
if(x.v<y.v){
return x.u<y.u;
}
return x.v<y.v;
}
void dfs(int u){
vis[u]=true;
printf("%d ",u);
for(int i=0;i<g[u].size();i++){
int point=s[g[u][i]].v;
if(!vis[point]){
dfs(point);
}
}
}
void bfs(int u){
queue<int> q;
q.push(u);
printf("%d ",u);
vis[u]=true;
while(!q.empty()){
for(int i=0;i<g[q.front()].size();i++){
int fro=s[g[q.front()][i]].v;
if(!vis[fro]){
q.push(fro);
printf("%d ",fro);
vis[fro]=true;
}
}
q.pop();
}
}
int main(){
scanf("%d%d",&n,&m);
for(int i=0;i<m;i++){
int u1,v1;
scanf("%d%d",&u1,&v1);
s.push_back((edge){u1,v1});
}
sort(s.begin(),s.end(),cmp);
for(int i=0;i<m;i++){
g[s[i].u].push_back(i);
}
memset(vis,0,sizeof(vis));
dfs(1);
printf("\n");
memset(vis,0,sizeof(vis));
bfs(1);
return 0;
}