在 M 婚介所,大规模裁员计划正在进行中。所有的员工都在忙着计算日子,希望在事态向有利方向发展时,他们能直接接管公司,而不是继续工作。
公司的结构是一棵以编号为 1 的顶点为根的悬挂树。员工 $v$ 的直接上级是编号为 $p_v$ 的员工。员工 $v$ 的能力水平由参数 $s_v$ 定义。所有员工的该参数各不相同。能力水平越高,员工对公司就越有用。请注意,由于招聘过程不透明,可能会出现能力较低的员工是能力较高员工的上级的情况。
由于重大的人员重组,每天,处于工作层级根部的 CEO 都会被解雇。如果公司里还有剩余员工,能力最强的直接下属将接替他们的位置。此后,前任主管的其他下属将成为新任主管的下属。有关该条件的详细理解,请参阅样例说明。
每位员工都很容易计算出他们成为 CEO 需要多少天。许多人并不想等那么久,因为他们可能只会当一天的领导!为了加快这个过程,他们准备“取消”一位同事。被“取消”的员工能力水平降为 0,因为没有人愿意再与他们互动。
你需要回答 $q$ 个询问。在第 $k$ 个询问中,员工 $v_k$ 想知道,如果他们愿意“取消”恰好一名员工,他们接管公司所需的最少天数。所有询问都是假设且独立的,且所有员工的真实能力水平在所有询问中保持不变。
输入格式
第一行包含两个整数 $n, q$ ($2 \le n \le 300\,000, 1 \le q \le n$),分别表示员工人数和询问次数。
第二行包含 $n-1$ 个整数 $p_2, p_3, \dots, p_n$ ($1 \le p_i < i$),表示编号为 2 到 $n$ 的员工的直接上级。
第三行包含 $n$ 个整数 $s_1, s_2, \dots, s_n$ ($1 \le s_i \le n$),表示员工的能力水平。保证所有能力水平各不相同。
第四行包含 $q$ 个整数 $v_1, v_2, \dots, v_q$ ($1 \le v_i \le n$),表示晋升询问。保证所有 $v_i$ 各不相同。
输出格式
输出 $q$ 个由空格分隔的整数,表示员工 $v_1, v_2, \dots, v_q$ 成为主管所需的最少天数。
样例
输入 1
5 4 1 2 2 1 3 5 1 2 4 5 3 1 4
输出 1
1 3 0 2
说明
在测试样例中,第五位员工可以在 1 天内接管公司。为此,只需“取消”第二位员工即可。公司结构将发生如下变化:
初始结构与第 1 天
第三位员工可以在 3 天内接管公司。为此,只需“取消”第五位或第四位员工即可。如果取消第五位员工,公司结构将发生如下变化:
初始结构、第 1 天、第 2 天与第 3 天
第一位员工已经是公司主管,因此对应询问的答案为 0。
第四位员工可以在两天内成为公司主管。与上一个例子类似,只需“取消”第五位员工即可。
子任务
| 子任务 | 分值 | 额外约束 | 所需子任务 | 说明 |
|---|---|---|---|---|
| 0 | 0 | — | — | 样例 |
| 1 | 10 | — | — | $p_i = 1$ 或 $p_i = i - 1$,且对于不超过两个 $i$,$p_i = 1$ |
| 2 | 6 | — | 1 | $p_i = 1$ 或 $p_i = i - 1$ |
| 3 | 8 | $n \le 50, q \le 50$ | 0 | |
| 4 | 13 | $n \le 1000, q \le 1000$ | 0, 3 | |
| 5 | 11 | — | $q \le 100$ | 0, 3 |
| 6 | 9 | — | — | $p_i = \lfloor \frac{i}{2} \rfloor$ |
| 7 | 11 | — | 0, 3, 6 | 任何员工的“上级*”数量不超过 100 |
| 8 | 14 | — | — | 对于所有 $i > 1$,$s_i > s_{p_i}$ |
| 9 | 18 | — | 0–8 | 离线评测 |
员工的“上级*”指其直接上级以及其直接上级的所有上级组成的集合。