#S20260808C. 树上第K个祖先
树上第K个祖先
题目背景
给定一棵有根树,你需要回答若干次询问:某个节点的第 个祖先是谁。
题目描述
给你一棵有 个节点的有根树,节点编号为 ,根节点为 号节点。
树以父节点数组的形式给出:第 个节点()的父节点为 。
定义节点 的第 个祖先为:从 出发,沿父节点方向向上走 步到达的节点。节点 的第 个祖先是它的父节点,第 个祖先是父节点的父节点,以此类推。根节点没有祖先。
接下来有 次询问,每次询问给出 和 ,请输出节点 的第 个祖先的编号;如果该祖先不存在(即向上走不到 步就越过了根节点),输出 。
输入格式
第一行两个整数 ,表示节点个数和询问次数。
第二行 个整数 ,其中 表示节点 的父节点编号。保证 。当 时,本行为空行。
接下来 行,每行两个整数 ,表示一次询问。
输出格式
输出 行,每行一个整数,依次表示每次询问的答案:节点 的第 个祖先的编号,不存在则输出 。
样例
7 3
0 0 1 1 2 2
3 1
5 2
6 3
1
0
-1
样例解释
树的结构为:节点 的父节点是 ;节点 的父节点是 ;节点 的父节点是 。
- 询问 :节点 向上走 步到达节点 。
- 询问 :节点 向上走 步,依次经过节点 ,到达节点 。
- 询问 :节点 向上走 步会越过根节点,祖先不存在,输出 。
数据范围
对于 的数据,保证:
相关
在下列比赛中: