朋友说我的dfs写得很怪
#include<bits/stdc++.h>
using namespace std;
long long n,m,u,v,d[100010],start;
vector<int> Q[100010];
queue<int> B;
bool vis[100010],at[100010];
void dfs(int b){
cout<<b<<' ';
if(Q[b].size()==0||vis[b]==1){
vis[b]=1;
return ;
}
vis[b]=1;
for(int j=0;j<Q[b].size();j++){
if(vis[Q[b][j]]==0) dfs(Q[b][j]);
}
}
void bfs(){
B.push(1);
vis[1]=1;
while(B.size()!=0){
start=B.front();
B.pop();
cout<<start<<' ';
for(int i=0;i<Q[start].size();i++){
if(vis[Q[start][i]]==0){
vis[Q[start][i]]=1;
B.push(Q[start][i]);
}
}
}
return ;
}
int main(){
cin>>n>>m;
for(int i=1;i<=m;i++){
cin>>u>>v;
Q[u].push_back(v);
}
for(int i=1;i<=n;i++){
sort(Q[u].begin(),Q[u].end());
}
dfs(1);
cout<<endl;
memset(vis,0,sizeof(vis));
bfs();
}