Description
给定一棵n个节点的有根树,编号依次为1到n,其中1号点为根节点。每个点有一个权值v_i。
你需要将这棵树转化成一个大根堆。确切地说,你需要选择尽可能多的节点,满足大根堆的性质:对于任意两个点i,j,如果i在树上是j的祖先,那么v_i>v_j。
请计算可选的最多的点数,注意这些点不必形成这棵树的一个连通子树。
Input
第一行包含一个正整数n(1<=n<=200000),表示节点的个数。
接下来n行,每行两个整数v_i,p_i(0<=v_i<=10^9,1<=p_i<i,p_1=0),表示每个节点的权值与父亲。
Output
输出一行一个正整数,即最多的点数。

给定一棵有根树,需将其转化为大根堆,选择满足权值条件的节点,输出最多能选择的节点数。输入包括节点数量及每个节点的权值和父节点,输出为一个正整数。样例输入输出展示了6节点树的解决方案,最多可选5个节点。
最低0.47元/天 解锁文章
1388

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



