地址:http://ybt.ssoier.cn:8088/problem_show.php?pid=1352
1 #include<bits/stdc++.h>
2 using namespace std;
3
4 vector<int> mp[105];//图(邻接表)
5 queue<int> que;//队列
6 int n;
7 int idg[105];//入度
8
9 void tps(){//核心代码
10 for(int i=1;i<=n;i++){
11 if(idg[i]==0){
12 que.push(i);
13 cout<<i<<" ";
14 }
15 }
16 while(!que.empty()){
17 int u=que.front();
18 que.pop();
19 for(int i=0;i<mp[u].size();i++){
20 int v=mp[u][i];
21 idg[v]--;
22 if(idg[v]==0){
23 que.push(v);
24 cout<<v<<" ";
25 }
26 }
27 mp[u].clear();
28 }
29 }
30
31
32 int main(){
33 cin>>n;
34 for(int i=1;i<=n;i++){
35 while(1){//输入
36 int h;
37 cin>>h;
38 if(h!=0){
39 mp[i].push_back(h);
40 idg[h]++;
41 }
42 else break;
43 }
44 }
45 // for(int i=1;i<=n;i++){
46 // cout<<i<<':'<<" ";
47 // for(int j=0;j<mp[i].size();j++){
48 // cout<<mp[i][j]<<" ";
49 // }
50 // cout<<endl;
51 // }
52 tps();
53 // while(!que.empty){
54 // cout<<que.front()<<" ";
55 // que.pop();
56 // }
57 return 0;
58 }