1351:【例4-12】家谱树
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 }