B. 树上第K个祖先

    传统题 1000ms 256MiB

树上第K个祖先

该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。

题目背景

给定一棵有根树,你需要回答若干次询问:某个节点的第 kk 个祖先是谁。

题目描述

给你一棵有 nn 个节点的有根树,节点编号为 0n10 \sim n-1,根节点为 00 号节点。

树以父节点数组的形式给出:第 ii 个节点(1in11 \le i \le n-1)的父节点为 pip_i

定义节点 uukk 个祖先为:从 uu 出发,沿父节点方向向上走 kk 步到达的节点。节点 uu 的第 11 个祖先是它的父节点,第 22 个祖先是父节点的父节点,以此类推。根节点没有祖先。

接下来有 mm 次询问,每次询问给出 uukk,请输出节点 uu 的第 kk 个祖先的编号;如果该祖先不存在(即向上走不到 kk 步就越过了根节点),输出 1-1

输入格式

第一行两个整数 n,mn, m,表示节点个数和询问次数。

第二行 n1n-1 个整数 p1,p2,,pn1p_1, p_2, \dots, p_{n-1},其中 pip_i 表示节点 ii 的父节点编号。保证 0pi<i0 \le p_i < i。当 n=1n=1 时,本行为空行。

接下来 mm 行,每行两个整数 u,ku, k,表示一次询问。

输出格式

输出 mm 行,每行一个整数,依次表示每次询问的答案:节点 uu 的第 kk 个祖先的编号,不存在则输出 1-1

样例

7 3
0 0 1 1 2 2
3 1
5 2
6 3
1
0
-1

样例解释

树的结构为:节点 1,21,2 的父节点是 00;节点 3,43,4 的父节点是 11;节点 5,65,6 的父节点是 22

  • 询问 11:节点 33 向上走 11 步到达节点 11
  • 询问 22:节点 55 向上走 22 步,依次经过节点 22,到达节点 00
  • 询问 33:节点 66 向上走 33 步会越过根节点,祖先不存在,输出 1-1

数据范围

对于 100%100\% 的数据,保证:

  • 1n5×1041 \le n \le 5 \times 10^4
  • 1m1051 \le m \le 10^5
  • 0pi<i0 \le p_i < i
  • 0un10 \le u \le n-1
  • 1kn1 \le k \le n

2026年暑假第四次排位赛

未参加
状态
已结束
规则
XCPC
题目
4
开始于
2026-8-8 14:00
结束于
2026-8-8 16:30
持续时间
2.5 小时
主持人
参赛人数
3