树上旅行
类型:程序题

题目描述

给定一棵有 $n$ 个结点的有根树,结点依次以 $1, 2, \ldots, n$ 编号,其中根结点的编号为 1。

小 A 计划在这棵有根树上进行 $q$ 次旅行。在第 $i$ 次旅行中,小 A 首先会选定结点 $s_i$ 作为起点,并移动若干次。移动分为以下两种:

  1. 移动至当前结点的父亲结点。特殊地,如果当前位于根结点,则不进行移动。

  2. 移动至当前结点的所有子结点中编号最小的结点。特殊地,如果当前位于叶子结点,则不进行移动。

由于移动次数可能很大,对于第 $i$ 次旅行,旅行中的移动将以 $k_i$ 个不为零的整数构成的序列 $a_{i,1}, a_{i,2}, \ldots, a_{i,k_i}$ 表示。对于 $a_{i,j}$,若 $a_{i,j} > 0$ 则代表进行 $a_{i,j}$ 次第一种移动;若 $a_{i,j} < 0$ 则代表进行 $-a_{i,j}$ 次第二种移动。根据给出的序列从左至右完成所有移动后,小 A 所在的结点即是旅行的终点。

给定每次旅行的起点与移动序列,请求出旅行终点的结点编号。

输入格式

第一行,两个正整数 $n, q$,分别表示有根树的结点数量、以及旅行次数。

第二行,$n-1$ 个整数 $p_2, p_3, \ldots, p_n$,其中 $p_i$ 表示结点 $i$ 的父亲结点编号。

接下来 $2q$ 行中的第 $2i-1$ 行($1 \le i \le q$)包含两个正整数 $s_i, k_i$,分别表示第 $i$ 次旅行的起点编号,以及移动序列的长度。第 $2i$ 行包含 $k_i$ 个整数 $a_{i,1}, a_{i,2}, \ldots, a_{i,k_i}$,表示移动序列。

输出格式

输出共 $q$ 行,第 $i$ 行包含一个整数,表示第 $i$ 次旅行终点的结点编号。

输入样例 1

5 4
1 1 2 2
3 3
1 -1 -1
2 5
1 -1 1 -1 1
5 8
1 1 1 -1 -1 -1 -1 -1
5 3
-1 -1 1

输出样例 1

4
1
4
2

输入样例 2

8 3
5 4 2 1 3 6 6
8 1
8
8 2
8 -8
8 3
8 -8 8

输出样例 2

1
7
1

数据范围

子任务编号 测试点占比 $n$ $q$ $\sum k_i$ 特殊性质
1 20% $\le 100$ $\le 100$ $\le 1000$ 保证 $a_{i,j}$ 为 $1$ 或 $-1$
2 20% $\le 10^4$ $\le 10^4$ $\le 4 \times 10^4$ 仅包含第一种移动
3 20% $\le 10^4$ $\le 10^4$ $\le 4 \times 10^4$ 仅包含第二种移动
4 40% $\le 10^5$ $\le 2 \times 10^4$ $\le 10^5$ -

对于所有测试点,保证 $1 \le n \le 10^5$,$1 \le q \le 2 \times 10^4$,$1 \le p_i \le n$,$1 \le s_i \le n$,$k_i \ge 1$ 且 $\sum k_i \le 10^5$,$1 \le |a_{i,j}| \le n$。

代码编辑器 加载中...
测试用例输入
{{resultStatus.text}}
乐编题库AI助手
人工客服
微信扫码联系客服
历史对话
{{ s.title || '未命名对话' }}
{{ s.created_at }}
暂无历史对话
我能帮助你什么?