目录
题目
在一颗树中,每个节点代表一个家庭成员,节点的数字表示其个人的财富值,一个节点及其直接相连的子节点被定义为个小家庭。
现给你一颗树,请计算出最富裕的小家庭的财富和。
输入描述
第一行为一个数 N,表示成员总数,成员编号 1~N。1< N 1000第二行为 N 个空格分隔的数,表示编号 1~N 的成员的财富值。0 <=财富值<= 1000000.
接下来 N-1 行,每行两个空格分隔的整数 (N1,N2) ,表示 N1 是 N2 的父节点
输出描述
最富裕的小家庭的财富和示例1:
输入:
4
100 200 300 500
1 2
1 3
2 4
输出
700
说明
成员1,2,3 组成的小家庭财富值为600成员2,4 组成的小家庭财富值为700
思路
1:C卷的题目真的是越来越简单了,这里找出最富裕的家庭,其实就是找到每个家庭的最大父节点,然后将所有的钱全部加到父节点上即可。
2:因为有对应关系,所以我们定义一个hashmap来保存父子关系,最后遍历所有的输入
该博客介绍了如何解决华为在线开发者评估(OD)中的一道题目,即在给定的树形结构中找到最富裕的小家庭。通过分析思路,博主提出用哈希映射记录父子关系,然后遍历所有节点将财富累加到父节点,最终找到最富裕家庭。提供了C++的解题代码,并附带了华为OD的其他编程语言题库资源链接。
订阅专栏 解锁全文


被折叠的 条评论
为什么被折叠?



