#CF2079C. 梦想无害
梦想无害
梦想无害
- 输入文件:标准输入
- 输出文件:标准输出
- 时间限制:3 秒
- 内存限制:256 MB
题目描述
在婚介机构 M.,即将进行大规模裁员。所有员工都在计算着,如果形势对他们有利,他们还需要多少天才能成为公司负责人,而不是继续工作。
公司的组织结构是一棵有根树,根节点为员工 。员工 的直接上级是编号为 的员工。
员工 的能力等级由参数 表示。所有员工的能力等级互不相同。能力等级越高,员工对公司越有用。注意,由于招聘过程不透明,可能出现能力较低的员工是能力较高员工的上级的情况。
在重大人事调整中,每天都会解雇当前公司的 CEO(即树根)。如果公司中还有员工,则能力最强的直接下属会接替 CEO 职位。之后,原 CEO 的其他下属会成为新 CEO 的下属。具体过程可参考示例中的说明。
每个员工都很容易计算出自己需要多少天才能成为 CEO。但很多人不愿意等那么久,因为他们只能当一天的 CEO!为了加快这一进程,他们准备“取消”一名同事。被“取消”的员工的能力等级降为 ,因为没人愿意再和他们共事。
你需要回答 个查询。在第 个查询中,员工 想知道:如果他们可以恰好取消一名员工,那么他们成为 CEO 所需的最少天数是多少。
所有查询都是独立的假设情况,实际员工能力等级在所有查询中保持不变。
输入格式
第一行包含两个整数 (,)——员工数量和查询数量。
第二行包含 个整数 ()——员工 到 的直接上级编号。
第三行包含 个整数 ()——员工的能力等级。保证所有 互不相同。
第四行包含 个整数 ()——晋升查询的员工编号。保证所有 互不相同。
输出格式
输出 个整数,用空格分隔——对于查询 ,输出对应的最少天数。
示例
标准输入
5 4
1 2 2 1
3 5 1 2 4
5 3 1 4
标准输出
1 3 0 2
示例解释
在测试样例中:
- 员工 5 可以在 天后成为负责人。只需“取消”员工 2 即可。公司结构变化如下:
初始结构: 第 1 天:
1 5
| |
2 2
/ \ |
3 4 3
|
5
- 员工 3 可以在 天后成为负责人。只需“取消”员工 5 或员工 4。若取消员工 5,结构变化如下:
初始结构: 第 1 天: 第 2 天: 第 3 天:
1 2 4 3
| | | |
2 3 3 5
/ \ \ \
3 4 5 5
|
5
-
员工 1 已经是公司负责人,对应查询答案为 。
-
员工 4 可以在 天后成为负责人。类似上例,取消员工 5 即可。
评分规则
测试数据分为 组。只有通过某组的所有测试以及它所依赖的前若干组的所有测试,才能获得该组分数。
注意:通过示例测试不是某些组的前置条件。
“离线评测”表示该组的结果仅在比赛结束后才能看到。
| 组号 | 分值 | 额外限制 | 依赖组 | 备注 |
|---|---|---|---|---|
| 0 | – | – | 示例 | |
| 1 | 10 | 或 ,且最多两个 满足 | ||
| 2 | 6 | 1 | 或 | |
| 3 | 8 | , | 0 | |
| 4 | 13 | , | 0, 3 | |
| 5 | 11 | –, | ||
| 6 | 9 | – | – | (完全二叉树) |
| 7 | 11 | 0, 3, 6 | 任意员工的上级集合大小不超过 | |
| 8 | 14 | – | 对所有 ,(能力随深度递减) | |
| 9 | 18 | 0–8 | 离线评测 | |
注:员工的上级集合包括其直接上级以及所有上级的上级。