。。被多组测试坑了一波
1 #include<iostream>
2 #include<vector>
3 #include<queue>
4 using namespace std;
5 typedef long long ll;
6 const int N = 1e3;
7 vector<int>edge[N];
8 vector<int> ans;
9 priority_queue<int, vector<int>, greater<int> >q;
10 int n,m,l,r,in[N];
11 int main(){
12 ios::sync_with_stdio(0);
13 while(cin>>n>>m){
14
15 ans.clear();while(!q.empty())q.pop();
16 for(int i = 1;i <= n;++i){in[i] = 0;edge[i].clear();}
17
18 for(int i = 1;i <= m;++i){
19 cin>>l>>r;
20 edge[l].push_back(r);in[r]++;
21 }
22 for(int i = 1;i <= n;++i)if(in[i]==0)q.push(i);
23 while(!q.empty()){
24 int p = q.top();q.pop();
25 ans.push_back(p);
26 for(int i = 0; i < edge[p].size();++i){
27 int y = edge[p][i];in[y]--;
28 if(!in[y])q.push(y);
29 }
30 }
31 for(int i = 0;i < n;++i){
32 if(i!=n-1)cout<<ans[i]<<" ";
33 else cout<<ans[i]<<endl;
34 }
35 }
36 return 0;
37 }