#P16145. [ICPC 2017 NAIPC] Heaps from Trees
[ICPC 2017 NAIPC] Heaps from Trees
题目描述
给定一棵有根树,包含 个节点。节点编号为 ,其中节点 1 是根节点。每个节点有一个值 。
你希望将这棵树转化为一个堆。也就是说,你要选出尽可能多的节点,使得它们满足以下堆性质:对于选出的任意两个节点 和 ,如果节点 是节点 在树上的祖先,则必须满足 。注意,相等是不允许的。
请计算最多可以选出多少个节点组成这样的子集。该子集不一定要构成一棵子树。
输入格式
每个输入包含单个测试用例。请注意,你的程序可能会在不同输入上多次运行。输入的第一行包含一个整数 (),表示树中节点的数量。节点编号为 。
接下来的 行,按顺序描述每个节点。每行包含两个整数 和 ,其中 ()是节点的值,()是其父节点的编号。每个节点的编号都严格大于其父节点的编号。只有根节点 1 满足 ,因为它没有父节点。对于其他节点(),有 。
输出格式
输出一个整数,表示满足堆性质的最大子集的节点数。
5
3 0
3 1
3 2
3 3
3 4
1
5
4 0
3 1
2 2
1 3
0 4
5
6
3 0
1 1
2 1
3 1
4 1
5 1
5
11
7 0
8 1
5 1
5 2
4 2
3 2
6 3
6 3
10 4
9 4
11 4
7
提示
翻译由 DeepSeek V3.2 完成