#P11513. [ROIR 2017] 培训 (Day 2)

    ID: 12890 远端评测题 1000ms 256MiB 尝试: 0 已通过: 0 显示难度省选/NOI− 上传者: 标签>2017Special JudgeROIR(俄罗斯)

[ROIR 2017] 培训 (Day 2)

背景

翻译自 ROIR 2017 D2T4。

题目描述

某公司共有 nn 名员工,每个员工都有一个唯一的编号,编号从 11 到 nn。编号为 11 的员工是公司总经理,除了总经理之外,每个员工都有一个直接上级,员工 ii 的直接上级编号为 pip_i,且有 pi<ip_i < i。

若 px=yp_x = y,则员工 xx 被称为员工 yy 的第 11 层下属;若员工 pxp_x 是员工 yy 的第 k−1k-1 层下属,则员工 xx 被称为员工 yy 的第 kk 层下属。

现在,公司总经理可以选择一些员工参加培训。他决定选择两个数字 LL 和 RR,将所有编号满足 L≤i≤RL \leq i \leq R 的员工送去培训。

在确定 LL 和 RR 之前,总经理收到了 mm 条员工的要求,第 jj 条要求用两个数字 uju_j 和 kjk_j 表示,这代表员工 uju_j 希望其第 kjk_j 层下属中至少有一个被送去培训。为了节省费用,总经理希望确定 LL 和 RR 的值使得送去培训的员工人数最少,并且所有员工的要求都能满足。

需要编写程序,根据公司内部的上下级关系和员工的要求,找出一对 LL 和 RR,使得所有要求都能得到满足,并且送去培训的员工人数最少。如果有多个满足条件的 (L,R)(L, R) 对,选择其中 LL 最小的那个。

输入格式

第一行输入一个整数 nn,表示公司员工的总数(2≤n≤2000002 \leq n \leq 200000)。

第二行输入 n−1n-1 个整数 p2,p3,…,pnp_2, p_3, \dots, p_n,其中 pip_i 表示员工 ii 的直接上级编号,且 1≤pi<i1 \leq p_i < i。

第三行输入一个整数 mm,表示员工的要求数量。

接下来 mm 行,每行包含两个整数 uju_j 和 kjk_j,表示第 jj 条要求。

输出格式

输出两个整数 LL 和 RR,表示选择的员工编号区间。如果存在多个符合条件的 (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 层下属。

数据范围

子任务 分值 2≤n≤2\le n\le 1≤m≤1\le m\le 其它特殊性质
11 1919 5050
22 2525 30003000
33 2121 200000200000 pi=i−1p_i=i-1
44 3535