#HK5160. 「ROIR 2017 Day 2」职业培训

「ROIR 2017 Day 2」职业培训

题目描述

译自 ROIR 2017 Day2 T4. Повышение квалификации

某公司的员工互动以层级结构组织。公司共有 nn 名员工,每人分配一个唯一的编号从 11nn,其中编号 11 为总监。除了总监外,每名员工有且仅有一名直接上级。员工 ii 的直接上级编号为 pip_i,且 pi<ip_i < i

如果 px=yp_x = y,则员工 xx 是员工 yy11 级下属。对于 k>1k > 1,如果员工 pxp_x 是员工 yy(k1)(k-1) 级下属,员工 xx 是员工 yykk 级下属。

公司总监有机会派遣部分员工参加职业培训课程。为此,他决定选择两个数字 LLRR,将编号在 LiRL \leq i \leq R 范围内的所有员工送往培训。

在选择 LLRR 之前,总监收到了公司员工的 mm 个请求。第 jj 个请求由两个数字 uju_jkjk_j 组成,表示员工 uju_j 请求将他的某个 kjk_j 级下属送往培训。为了节约成本,总监希望选择 LLRR,使得送往培训的员工数量最少,但同时满足所有请求。

你的任务是编写一个程序,根据公司上下级关系和员工请求,确定数字 LLRR,使得将编号从 LLRR(含两端)的所有员工送往培训时,所有请求都被满足,且送往培训的员工数量最少。如果存在多个最优的 L,RL, R 对,需要找到 LL 值最小的解。

输入格式

输入文件的第一行包含一个整数 nn (2n200000)(2 \leq n \leq 200000),表示公司员工数量。

第二行包含 (n1)(n-1) 个整数 p2,p3,,pnp_2, p_3, \ldots, p_n (1pi<i)(1 \leq p_i < i),表示员工的直接上级编号。

第三行包含一个整数 mm,表示员工请求的数量。

接下来的 mm 行描述员工请求,每行包含两个整数 uj,kju_j, k_j1uj<n1 \leq u_j < n1kj<n1 \leq k_j < n,保证员工 uju_j 至少有一个 kjk_j 级下属)。

输出格式

输出两个整数 LLRR。如果存在多个最优的 (L,R)(L, R) 对,输出 LL 值最小的那个。

7
1 1 2 2 3 3
3
1 1
3 1
1 2

3 6

送往培训的员工为编号 3,4,5,63,4,5,6 的员工。编号 33 的员工是编号 11 的员工的 11 级下属,编号 44 的员工是编号 11 的员工的 22 级下属,编号 66 的员工是编号 33 的员工的 11 级下属。

数据范围与提示

详细子任务附加限制及分值如下表所示:

子任务 分值 n,mn, m 的限制 额外条件 子任务依赖
11 1919 2n50,1m502 \leq n \leq 50, 1 \leq m \leq 50
22 2525 2n3000,1m30002 \leq n \leq 3000, 1 \leq m \leq 3000 11
33 2121 2n200000,1m2000002 \leq n \leq 200000, 1 \leq m \leq 200000 对于所有 iipi=i1p_i = i-1
44 3535 1,2,31, 2, 3