描述
有个人的家族很大,辈分关系很混乱,请你帮整理一下这种关系。
给出每个人的孩子的信息。
输出一个序列,使得每个人的后辈都比那个人后列出。
输入
第1行一个整数N(1≤N≤100),表示家族的人数;
接下来N行,第i行描述第i个人的儿子;
每行最后是0表示描述完毕。
输出
输出一个序列,使得每个人的后辈都比那个人后列出;
如果有多解输出任意一解。
样例输入
5
0
4 5 1 0
1 0
5 3 0
3 0
样例输出
2 4 5 3 11 #include<bits/stdc++.h> 2 using namespace std; 3 int vis[101][101]; 4 int r[101]; //入度 ,被指向的顶点数量 5 int c[101]; //出度,指向的顶点数量 6 stack<int>v; 7 int main() 8 { 9 int n; 10 cin>>n; 11 for(int i=1;i<=n;i++) 12 { 13 int x; 14 while(cin>>x,x) 15 { 16 c[i]++; //i的出度+1 17 vis[i][c[i]] = x; //存储和i相连的结点x 18 r[x]++; //结点x的入度+1 19 } 20 } 21 for(int i=1;i<=n;i++) 22 if(r[i]==0) 23 v.push(i); //入度为0,入栈 24 int num = 0; 25 do 26 { 27 int temp = v.top();v.pop(); 28 num++; 29 cout<<temp<<" "; 30 for(int i=1;i<=c[temp];i++) //遍历和栈顶相连的点c[temp] 31 { 32 r[vis[temp][i]]--; //其他点的入度-1 33 if(r[vis[temp][i]]==0) 34 v.push(vis[temp][i]); 35 } 36 }while(num!=n); 37 return 0; 38 }
标签:输出,int,入度,家谱,7690,TZOJ,101 From: https://www.cnblogs.com/jyssh/p/17219031.html