42 lines
853 B
C++
42 lines
853 B
C++
#include <iostream>
|
|
#include <vector>
|
|
#include <queue>
|
|
using namespace std;
|
|
|
|
int main(){
|
|
int n, e;
|
|
cin >> n >> e;
|
|
vector<vector<int>> adj(n);
|
|
vector<int> degree(n, 0);
|
|
for(int i = 0; i < e; i++){
|
|
int a, b;
|
|
cin >> a >> b;
|
|
adj[a].push_back(b);
|
|
degree[b]++;
|
|
}
|
|
|
|
priority_queue<int, vector<int>, greater<int>> pq;
|
|
for(int i = 0; i < n; i++){
|
|
if(degree[i] == 0) pq.push(i);
|
|
}
|
|
|
|
vector<int> result;
|
|
while(!pq.empty()){
|
|
auto m = pq.top(); pq.pop();
|
|
for(auto x : adj[m]){
|
|
degree[x]--;
|
|
if(degree[x] == 0) pq.push(x);
|
|
}
|
|
result.push_back(m);
|
|
}
|
|
|
|
if(result.size() != n){
|
|
cout << "No" << endl;
|
|
return 0;
|
|
}
|
|
for(auto x: result){
|
|
cout << x << " ";
|
|
}
|
|
cout << endl;
|
|
return 0;
|
|
} |