QOJ.ac

QOJ

Time Limit: 2 s Memory Limit: 1024 MB Total points: 100

#6447. 树的堆

Statistics

给定一棵包含 $n$ 个节点的有根树。节点编号为 $1 \dots n$,其中节点 $1$ 为根。每个节点都有一个权值 $v_i$。

你希望将这棵树转化为一个堆。也就是说,你需要选择一个尽可能大的节点子集,使得该子集满足以下堆性质:对于子集中的任意两个节点 $i$ 和 $j$,如果节点 $i$ 是节点 $j$ 在树中的祖先,则必须满足 $v_i > v_j$。注意,权值相等是不允许的。

请计算能够构成满足上述堆性质的子集的最大节点数。该子集不需要构成一棵子树。

输入格式

输入包含单个测试用例。注意,你的程序可能会在不同的输入上运行多次。输入的第一行包含一个整数 $n$ ($1 \le n \le 2 \cdot 10^5$),表示树中的节点数。节点编号为 $1 \dots n$。

接下来的 $n$ 行按顺序描述各个节点。每行包含两个整数 $v_i$ 和 $p_i$,其中 $v_i$ ($0 \le v_i \le 10^9$) 是该节点的权值,$p_i$ ($0 \le p_i < i$) 是其父节点的索引。每个节点的索引都严格大于其父节点的索引。只有根节点 $1$ 满足 $p_1 = 0$,因为它没有父节点。对于所有其他节点 ($i = 2 \dots n$),满足 $1 \le p_i < i$。

输出格式

输出一个整数,表示满足堆性质的最大子集中的节点数。

样例

样例输入 1

5
3 0
3 1
3 2
3 3
3 4

样例输出 1

1

样例输入 2

5
4 0
3 1
2 2
1 3
0 4

样例输出 2

5

样例输入 3

6
3 0
1 1
2 1
3 1
4 1
5 1

样例输出 3

5

样例输入 4

11
7 0
8 1
5 1
5 2
4 2
3 2
6 3
6 3
10 4
9 4
11 4

样例输出 4

7

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.