家谱树

Posted Nico&11101001

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了家谱树相关的知识,希望对你有一定的参考价值。

【问题描述】
    有个人的家族很大,辈分关系很混乱,请你帮整理一下这种关系。
    给出每个人的孩子的信息。
    输出一个序列,使得每个人的后辈都比那个人后列出。
【输入格式】
    第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 1
 1 #include<iostream>
 2 #include<cstdio>
 3 using namespace std;
 4 int rd[1000];
 5 int ch[1000];
 6 int stack[1000];
 7 int a[1000][1000];
 8 int main()
 9 {
10     int n;
11     cin>>n;
12     for(int i=1;i<=n;i++)
13      {
14          int x;
15           do{
16               cin>>x;
17               if(x!=0)
18                {
19                  ch[i]++;
20                  a[i][ch[i]]=x;
21                  rd[x]++;
22              }
23               }while(x!=0);
24     }
25      int top=0,sum=0;
26      for(int i=1;i<=n;i++)
27       {
28           if(rd[i]==0)
29            {
30                stack[++top]=i;
31            }
32       }
33      do
34      {
35         int i=stack[top];
36           cout<<i<<" ";
37           top--;
38           sum++;
39         for(int j=1;j<=ch[i];j++)
40         {
41            rd[a[i][j]]--;
42            if(rd[a[i][j]]==0)
43             {
44                 stack[++top]=a[i][j];
45              }
46          }
47       }while(sum!=n);
48       return 0;
49           
50       
51 }

 

以上是关于家谱树的主要内容,如果未能解决你的问题,请参考以下文章

家谱树

家谱树

1191. 家谱树 拓扑排序

Day10 树---哈夫曼树 家谱处理 搜索树判断 目录树

家谱树

Day10 树---哈夫曼树 家谱处理 搜索树判断 目录树