C++编程实现:树状部门结构下活动最大参加人数计算
有一个大型企业集团,由N个部门组成,编号从1到N。这些部门之间的层次关系形成了一个树状结构,一个上级部门可能会有1个或多个直接下级部门,一个下级部门只有一个直接上级部门。
本月集团举办了一个大型活动,这次的活动组织方按如下要求安排活动:
- 来的人越多越好;
- 如果一个上级部门参加本次活动,那么他们的直接下级部门就不能参加,而他的间接下级部门可以参加(如部门1参加,则部门2、3不能参加,部门4、5、6可以参加)。
请你帮他们计算一下,如何安排可以使参加活动的人数最多,并输出参加活动的最多人数。
示例:当N=6,每个部门编号为1到6,部门上下级关系和部门人数如下: 部门1(2人)为根节点,下属部门2(4人)和部门3(3人);部门2下属部门4(3人);部门3下属部门5(2人)和部门6(4人)。
注意:示例中,部门1是层级最高的部门,没有直接上级,故将其直接上级部门设为0; 当安排(1、4、5、6)这4个部门参加活动时,人数最多,为11,所以输出11。
输入描述
第一行输入一个正整数N(1≤N≤100000),表示集团所有部门的数量 接下来有N行,每行输入三个非负整数F、S和C(0≤F≤N,1≤S≤N,F≠S,1≤C≤1000),F表示是部门S的直接上级,C表示部门S的人数,整数之间用一个空格隔开
注意:如果是最上层的部门,其直接上级部门编号为0
输出描述
输出一个整数,表示参加活动的最多人数
样例输入
6
0 1 2
1 2 4
1 3 3
2 4 3
3 5 2
3 6 4
样例输出
11 本题为编程题,提交代码并运行通过测试点后判分。
正在加载题目数据…
子题
该题型需在试卷/作业中作答,单题练习暂不支持
答案解析