• pat甲级1004 Counting Leaves


    题意:给你一棵有n个节点的树,其中有m个节点是非叶节点,剩下输入m行,每一行代表一个非叶节点的信息,分别是该非叶节点的序号,有k个孩子,每个孩子节点的序号。要求这棵树每一层有多少个叶子节点。

    分析:数据结构基础题,数据量不大,节点数在100以内,但是一定不能构造一棵满二叉树来做,有可能这棵树退化成一条链,这样就需要2^100-1个节点来构造,内存必爆炸,看挺多人用bfs/dfs做,我用的结构体数组模拟了一下即可。

     1 #include<iostream>
     2 #include<cstring>
     3 #include<algorithm>
     4 using namespace std;
     5 struct node
     6 {
     7     int father,level,child;
     8 }a[110];
     9 int level[110];
    10 int main()
    11 {
    12     ios::sync_with_stdio(false);
    13     cin.tie(0);
    14     cout.tie(0);
    15     int n,m;
    16     while(cin>>n>>m)
    17     {
    18         memset(a,0,sizeof(a));
    19         memset(level,0,sizeof(level));
    20         int id,k,child_id;
    21         int max_level=1;//这里着重说明一下如果不像特别处理的话初始化为1比较好,有一个样例一直不过是因为我一开始初始化-1,后来发现如果只有一个节点的话,这个变量无法在下面更新,就会出错。
    22         for(int i=0;i<m;i++)
    23         {
    24             cin>>id>>k;
    25             a[id].child=1;//id这个节点有孩子
    26             for(int j=0;j<k;j++)
    27             {
    28                 cin>>child_id;
    29                 a[child_id].father=id;
    30             }
    31         }
    32         a[1].level=1;//设置根节点在第一层
    33         for(int i=1;i<=n;i++)
    34         {
    35             for(int j=1;j<=n;j++)
    36             {
    37                 if(a[j].father==i)
    38                 {
    39                     a[j].level=a[a[j].father].level+1;
    40                     if(a[j].level>max_level)
    41                     {
    42                         max_level=a[j].level;
    43                     }
    44                 }
    45             }
    46         }
    47         for(int i=1;i<=n;i++)
    48         {
    49             if(a[i].child==0)//统计每一层有多少个叶节点
    50             {
    51                 level[a[i].level]++;
    52             }
    53         }
    54         for(int i=1;i<max_level;i++)
    55         {
    56             cout<<level[i]<<" ";
    57         }
    58         cout<<level[max_level]<<endl;
    59     }
    60     return 0;
    61 }
  • 相关阅读:
    float浮动后,父级元素高度塌陷和遮盖问题
    Json
    测试连接数据库是否成功
    spark standalone zookeeper HA部署方式
    用NAN简化Google V8 JS引擎的扩展
    在Android上使用Google V8 JS 引擎
    数据可视化工具zeppelin安装
    kafka0.8.2以下版本删除topic
    kafka迁移数据目录
    scala2.10.x case classes cannot have more than 22 parameters
  • 原文地址:https://www.cnblogs.com/wade1998/p/13443045.html
Copyright © 2020-2023  润新知