代码
#include <bits/stdc++.h>
#define int long long
using namespace std;
const int N = 1e6 + 5;
int n, m;
int a, b, in[N];
vector<int>e[N];
queue<int>q;
void bfs(){
while(!q.empty()){
int t = q.front();
q.pop();
cout << t << " ";
for(int i = 0; i < e[t].size(); i++){
int x = e[t][i];
if(--in[x] == 0){
q.push(x);
}
}
}
}
int l[N], r[N];
bool vis[N];
void dfs(int x){
cout << x << ' ';
vis[x] = 1;
for(int i = 1; i <= m; i++){
if(l[i] == x){
if(vis[r[i]] == 0){
dfs(r[i]);
}
}
}
}
signed main(){
cin >> n >> m;
for(int i = 1; i <= m; i++){
cin >> a >> b;
l[i] = a;
r[i] = b;
e[a].push_back(b);
in[b]++;
}
for(int i = 1; i <= n; i++){
if(in[i] == 0){
dfs(i);
q.push(i);
}
}
cout << "\n";
bfs();
return 0;
}
样例过了, 但WA test 1