RT,感觉我的bfs和题解挺像的啊QAQ,我真菜QAQ
#include<bits/stdc++.h>
using namespace std;
vector<int>mp[101000];
bool vis[100100];
int n,m;
void link(int x,int y)
{
mp[x].push_back(y);
}
void dfs(int u)
{
if(!vis[u])
{
vis[u]=true;
cout<<u<<' ';
if(mp[u].size()==0)return;
for(int p=0;p<=mp[u].size()-1;p++)
if(!vis[mp[u][p]])
dfs(mp[u][p]);
}
}
void bfs(int u)
{
queue<int>que;
que.push(u);
vis[u]=1;
while(!que.empty())
{
for(int p=0;p<=mp[que.front()].size()-1;p++)
if(!vis[u])
que.push(mp[que.front()][p]),cout<<mp[que.front()][p]<<' ',vis[mp[que.front()][p]]=true;
que.pop();
}
}
bool cmp(int x,int y)
{
return x<y;
}
int main()
{
cin>>n>>m;
for(int p=1,x,y;p<=m;p++)
{
cin>>x>>y;
link(x,y);
}
for(int p=1;p<=n+1;p++)
sort(mp[p].begin(),mp[p].end(),cmp);
memset(vis,false,sizeof(vis));
dfs(1);
memset(vis,false,sizeof(vis));
bfs(1);
}