热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

PAT甲级1004:统计叶节点数量

参考:https:blog.csdn.netqq278672818articledetails54915636首先贴上我一开始的部分正确代码:1#inc

参考:https://blog.csdn.net/qq278672818/article/details/54915636

首先贴上我一开始的部分正确代码:

1 #include
2 using namespace std;
3 const int N=1e4+5;
4 struct node
5 {
6 int level,child;//level为该节点层数,child为该节点孩子数
7 node()
8 {
9 level=10000;
10 child=0;
11 }
12 }no[N];
13 int n,m;
14 int ans[N];//ans【i】为第i层叶子节点数
15 int cmp(struct node x,struct node y)
16 {
17 return x.level<y.level;
18 }
19 int main()
20 {
21 cin>>n;
22 if (n&#61;&#61;0)
23 return 0;
24 cin>>m;
25 no[1].level&#61;1;
26 int k,id,child,maxlevel&#61;1;//maxlevel为最大层数
27 for (int i&#61;0;i)
28 {
29 cin>>id>>k;
30 no[id].child&#61;k;
31 for (int i&#61;0;i)
32 {
33 cin>>child;
34 no[child].level&#61;no[id].level&#43;1;
35 maxlevel&#61;max(maxlevel,no[child].level);
36 }
37 }
38 sort(no&#43;1,no&#43;1&#43;n,cmp);//按层数排序
39 memset(ans,0,sizeof(ans));
40 for (int i&#61;1;i<&#61;n;i&#43;&#43;)
41 {
42 if (no[i].child&#61;&#61;0)
43 {
44 ans[no[i].level ]&#43;&#43;;
45 }
46 }
47 cout<1];
48 for (int i&#61;2;i<&#61;maxlevel;i&#43;&#43;)
49 cout<<" "<<ans[i];
50 cout<<endl;
51
52 return 0;
53 }

经参考了上边的参考链接后发现&#xff1a;若有测试点是无序的&#xff0c;则该解法错误&#xff0c;因为节点的层数设置将不正确。

再贴上AC代码&#xff1a;

1 #include
2 using namespace std;
3 vector<int> ve[110];
4 int n,m,maxlevel&#61;0;//maxleve记录树的最大层数
5 int ans[110];//ans[i]保存第i层的叶子节点数
6 void dfs(int level,int id)//level为当前层数&#xff0c;id为当前节点编号
7 {
8 if (ve[id].size()&#61;&#61;0)//找到叶子节点
9 {
10 maxlevel&#61;max(maxlevel,level);
11 ans[level]&#43;&#43;;
12 return;
13 }
14 for (int i&#61;0;i//递归遍历孩子节点
15 {
16 dfs(level&#43;1,ve[id][i]);
17 }
18 }
19 int main()
20 {
21 cin>>n;
22 if (n&#61;&#61;0)
23 return 0;
24 cin>>m;
25 int id,k,child;
26 for (int i&#61;0;i)
27 {
28 cin>>id>>k;
29 for (int j&#61;0;j)
30 {
31 cin>>child;
32 ve[id].push_back(child);
33 }
34 }
35 memset(ans,0,sizeof(ans));
36 dfs(0,1);
37 cout<0];
38 for (int i&#61;1;i<&#61;maxlevel;i&#43;&#43;)
39 {
40 cout<<" "<<ans[i];
41 }
42 cout<<endl;
43
44 return 0;
45 }

 

转:https://www.cnblogs.com/hemeiwolong/p/10693167.html



推荐阅读
  • 本文探讨了如何在模运算下高效计算组合数C(n, m),并详细介绍了乘法逆元的应用。通过扩展欧几里得算法求解乘法逆元,从而实现除法取余的计算。 ... [详细]
  • 火星商店问题:线段树分治与持久化Trie树的应用
    本题涉及编号为1至n的火星商店,每个商店有一个永久商品价值v。操作包括每天在指定商店增加一个新商品,以及查询某段时间内某些商店中所有商品(含永久商品)与给定密码值的最大异或结果。通过线段树分治和持久化Trie树来高效解决此问题。 ... [详细]
  • UNP 第9章:主机名与地址转换
    本章探讨了用于在主机名和数值地址之间进行转换的函数,如gethostbyname和gethostbyaddr。此外,还介绍了getservbyname和getservbyport函数,用于在服务器名和端口号之间进行转换。 ... [详细]
  • Splay Tree 区间操作优化
    本文详细介绍了使用Splay Tree进行区间操作的实现方法,包括插入、删除、修改、翻转和求和等操作。通过这些操作,可以高效地处理动态序列问题,并且代码实现具有一定的挑战性,有助于编程能力的提升。 ... [详细]
  • golang常用库:配置文件解析库/管理工具viper使用
    golang常用库:配置文件解析库管理工具-viper使用-一、viper简介viper配置管理解析库,是由大神SteveFrancia开发,他在google领导着golang的 ... [详细]
  • Java 中的 BigDecimal pow()方法,示例 ... [详细]
  • 题目Link题目学习link1题目学习link2题目学习link3%%%受益匪浅!-----&# ... [详细]
  • Docker的安全基准
    nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd ... [详细]
  • python的交互模式怎么输出名文汉字[python常见问题]
    在命令行模式下敲命令python,就看到类似如下的一堆文本输出,然后就进入到Python交互模式,它的提示符是>>>,此时我们可以使用print() ... [详细]
  • 前言--页数多了以后需要指定到某一页(只做了功能,样式没有细调)html ... [详细]
  • 本文详细介绍了如何构建一个高效的UI管理系统,集中处理UI页面的打开、关闭、层级管理和页面跳转等问题。通过UIManager统一管理外部切换逻辑,实现功能逻辑分散化和代码复用,支持多人协作开发。 ... [详细]
  • 本文探讨了如何在给定整数N的情况下,找到两个不同的整数a和b,使得它们的和最大,并且满足特定的数学条件。 ... [详细]
  • This document outlines the recommended naming conventions for HTML attributes in Fast Components, focusing on readability and consistency with existing standards. ... [详细]
  • 本文详细介绍了Java中的访问器(getter)和修改器(setter),探讨了它们在保护数据完整性、增强代码可维护性方面的重要作用。通过具体示例,展示了如何正确使用这些方法来控制类属性的访问和更新。 ... [详细]
  • MySQL索引详解与优化
    本文深入探讨了MySQL中的索引机制,包括索引的基本概念、优势与劣势、分类及其实现原理,并详细介绍了索引的使用场景和优化技巧。通过具体示例,帮助读者更好地理解和应用索引以提升数据库性能。 ... [详细]
author-avatar
手机用户2502885897
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有