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

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

题目描述

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

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

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

输入格式

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

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

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

输出格式

对于每次询问输出一行。如果以 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

数据范围与约定

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