20分,求助,呜呜呜
#include<bits/stdc++.h>
using namespace std;
vector<int> a[100001];
vector<int> b;
vector<int> res;
bool trace[100001]={0},traceb[100001]={0};
void print(vector<int>& t){
for(int i : t){
cout<<i<<" ";
}
cout<<endl;
}
void dfs(int be,int n){
if(trace[be] == 0){
trace[be] = 1;
cout<<be<<" ";
}else{
return;
}
vector<int> temp;
for(int i=1;i<=n;i++){
if(trace[i] == 0 && a[be].size() != 0){
for(int t : a[be]){
if(t == i){
temp.push_back(i);
}
}
}
}
sort(temp.begin(),temp.end());
for(int i : temp){
dfs(i,n);
}
}
vector<int> bres;
vector<int> v;
void pushv(int i){
v.insert(v.begin(),i);
cout<<i<<" ";
}
void bfs(int be,int n){
traceb[be] = 1;
pushv(be);
while(v.size() != 0){
vector<int> temp;
int val = v.back(); v.pop_back();
for(int i=1;i<=n;i++){
if(traceb[i] == 0 && a[val].size() != 0){
for(int t : a[val]){
if(t == i){
temp.push_back(i);
traceb[i] = 1;
}
}
}
}
sort(temp.begin(),temp.end());
for(int j:temp){
pushv(j);
}
}
}
int main()
{
int n,m;
scanf("%d%d",&n,&m);
int c,d;
for(int i=0;i<m;i++){
scanf("%d%d",&c,&d);
a[c].push_back(d);
}
dfs(1,n);
cout<<endl;
bfs(1,n);
return 0;
}