SZ#G6MT29. 【GESP强化 六级】子树成员

提交1 通过1
通过率100%
时间限制2000ms
内存限制256MiB
    ID: 11461 传统题 2000ms 256MiB 尝试: 1 已通过: 1 难度: 普及 上传者: 标签>GESPGESP强化C++c++编程题多叉树有根树先序遍历子树区间

题目描述

珅泽教育有一支包含 NN 名成员的队伍,成员编号为 11NN。成员 11 是总负责人。对于每名成员 ii2iN2\le i\le N),他的直接负责人为 pip_i,并且满足 pi<ip_i<i

小泽从成员 11 开始进行深度优先访问。每到一名负责人处,都按照成员编号从小到大的顺序访问他的直接下属。因此,整次访问会得到一个唯一的先序序列。

现在有 QQ 次询问。每次给出两个整数 uukk,需要找到以成员 uu 为根的管理子树中,第 kk 个被深度优先访问到的成员。如果这棵子树不足 kk 名成员,就输出 1-1

输入格式

第一行输入两个整数 NNQQ,分别表示成员数量和询问次数。

第二行输入 N1N-1 个整数 p2,p3,,pNp_2,p_3,\ldots,p_N,其中 pip_i 表示成员 ii 的直接负责人。

接下来 QQ 行,每行输入两个整数 uukk,描述一次询问。

输出格式

对于每次询问输出一行。如果以 uu 为根的子树中至少有 kk 名成员,就输出其中第 kk 个被访问的成员编号;否则输出 1-1

8 3
1 2 2 2 5 5 4
1 3
2 12
3 8
3
-1
-1
10 10
1 2 3 3 5 6 2 3 9
6 1
7 6
10 2
8 12
5 9
2 7
1 3
3 15
2 1
4 10
6
-1
-1
-1
-1
9
3
-1
2
-1
2 6
1
1 5
2 2
1 5
2 5
1 2
2 3
-1
-1
-1
-1
2
-1

数据范围与约定

  • 2N2×1052\le N\le2\times10^5
  • 1Q2×1051\le Q\le2\times10^5
  • 1pi<i1\le p_i<i