哪位大佬救救我
#include<bits/stdc++.h>
using namespace std;
int g[100005][100005],b[100005],que[100005];
bool vis[100005];
int n,m,cnt,sum,head,tail;
void dfs(int cur){
b[++cnt]=cur;
vis[cur]=1;
for(int i=1;i<=n;i++){
if(g[cur][i]==1&&vis[i]==0)dfs(i);
}
}
void bfs(int cur){
head=1;
tail=2;
que[head]=cur;
vis[cur]=1;
while(head<tail){
cur=que[head];
for(int i=1;i<=n;i++){
if(g[cur][i]&&!vis[i]){
que[tail++]=i;
vis[i]=1;
}
if(tail>n)break;
}
head++;
}
for(int i=1;i<=n;i++)cout<<que[i]<<" ";
return;
}
int main(){
int u,v;
cin>>n>>m;
for(int i=1;i<=m;i++){
cin>>u>>v;
g[u][v]=1;
}
for(int i=1;i<=n;i++){
if(vis[i]==0)dfs(i);
}
for(int i=1;i<=n;i++)cout<<b[i]<<" ";
cout<<endl;
for(int i=1;i<=n;i++)vis[i]=0;
for(int i=1;i<=n;i++){
if(vis[i]==0)bfs(i);
}
return 0;
}