20分求调!!
感谢大佬!!!
%%%!!!
#include<iostream>
#include<algorithm>
#include<cstring>
#include<queue>
#include<vector>
using namespace std;
int n,m;
bool vis[100005];
vector<int> a[100005];
bool cmp(int a,int b){
return a < b;
}
void dfs(int u){
cout << u << ' ';
for(int i = 0;i < a[u].size();i++){
if(!vis[a[u][i]]){
vis[a[u][i]] = 1;
dfs(a[u][i]);
}
}
}
queue<int> q;
void bfs(int u){
q.push(u);
while(!q.empty()){
int v = q.front();
q.pop();
cout << v << ' ';
for(int i = 0;i < a[v].size();i++){
if(!vis[a[v][i]]){
vis[a[v][i]] = 1;
q.push(a[v][i]);
}
}
}
}
int main(){
cin >> n >> m;
for(int i = 1;i <= m;i++){
int u,v;
cin >> u >> v;
a[u].push_back(v);
}
for(int i = 1;i <= n;i++) sort(a[i].begin(),a[i].end(),cmp);
for(int i = 1;i <= n;i++){
if(!vis[i]){
dfs(1);
}
}
cout << endl;
memset(vis,0,sizeof(vis));
for(int i = 1;i <= n;i++){
if(!vis[i]){
bfs(1);
}
}
return 0;
}