问题 K: PolarBear的过载查询

内存限制:512 MB 时间限制:4.000 S
评测方式:文本比较 命题人:
提交:51 解决:12

题目描述

为了比赛能顺利进行 PolarBear 搭建了一个评测机服务器集群,这个服务器集群共有 $n$ 台服务器编号 $ 1 \sim n$ ,每台服务器都有一个最小过载周期 $a_i$ ,这意味着在第 $k\cdot a_i$ 单位时间时第 $i$ 台服务器会处于过载状态$(k \in \mathbb{N^+})$,其中编号为 $1$ 的设备是总机,其余 $n - 1$ 台设备都有其唯一所属主机进行连接,且整个服务器网络所形成的拓扑关系不会产生环,故整个集群可以描述为一颗根节点为 $1$ 的树。子集群 $u$ 是指其拓扑关系图中 $u$ 所形成的整颗子树,我们称子集群过载当且仅当子集群中的所有服务器都处于过载状态。

PolarBear 现有 $q$ 次询问,每次询问都会给出一个数 $x$,需要注意询问会造成一定的地址偏移,偏移量为上一次查询的答案 $lastans$ ,第一次查询时为 $0$ ,对于每次询问需要回答子集群 $u = (x+lastans)\ mod\ n+1$ 的最小过载周期对 $998244353$ 取模后的结果。

输入

第一行 $2$ 个整数 $1\leq n,q\leq 500\ 000$ 表示服务器个数和询问个数。
第二行共 $n$ 个整数 $1 \leq a_i \leq 500\ 000$ 表示第 $i$ 台服务器的最小过载周期。
第三行共 $n - 1$ 个整数表示 $2 \sim n$ 台服务器的所属主机。
接下来 $q$ 行每行 $1$ 个整数 $1 \leq x \leq 500\ 000$ 。
注意本题数据量较大,建议使用scanf进行读入。

输出

输出 $q$ 行每行 $1$ 个整数代表每次询问的答案模 $998244353$ 后的结果。

样例输入 复制

6 6
1 2 3 4 5 6
1 1 2 1 3
5
2
1
5
6
1

样例输出 复制

6
6
4
4
5
60

提示


上图为样例所形成的树,为方便理解样例的过载周期 $a_i$ 与其编号相同。

第一次查询时 $lastans = 0, x = 5$ 可以得到要查询的集群 $u = (x+lastans)\ mod\ n+1 = (5 + 0) \mod 6 + 1 = 6$,集群 $6$ 只有一个服务器 $6$ 集群的最小过载周期为 $6$ 故对本次询问输出 $6$ 且 $lastans$ 变为 $6$ 。

第二次查询时 $lastans = 6, x = 2$ 可以得到要查询的集群 $u = (x+lastans)\ mod\ n+1 = (2 + 6) \mod 6 + 1 = 3$,集群 $3$ 有两个服务器 $6$ 和 $3$ 集群的最小过载周期为 $6$ 故对本次询问输出 $6$ 且 $lastans$ 变为 $6$ 。

第三次查询时 $lastans = 6, x = 1$ 可以得到要查询的集群 $u = (x+lastans)\ mod\ n+1 = (1 + 6) \mod 6 + 1 = 2$,集群 $2$ 有两个服务器 $2$ 和 $4$ 集群的最小过载周期为 $4$ 故对本次询问输出 $4$ 且 $lastans$ 变为 $4$ 。

第四次查询时 $lastans = 4, x = 5$ 可以得到要查询的集群 $u = (x+lastans)\ mod\ n+1 = (5 + 4) \mod 6 + 1 = 4$,集群 $4$ 只有一个服务器 $4$ 集群的最小过载周期为 $4$ 故对本次询问输出 $4$ 且 $lastans$ 变为 $4$ 。

第五次查询时 $lastans = 4, x = 6$ 可以得到要查询的集群 $u = (x+lastans)\ mod\ n+1 = (6 + 4) \mod 6 + 1 = 5$,集群 $5$ 只有一个服务器 $6$ 集群的最小过载周期为 $5$ 故对本次询问输出 $5$ 且 $lastans$ 变为 $5$ 。

第六次查询时 $lastans = 5, x = 1$ 可以得到要查询的集群 $u = (x+lastans)\ mod\ n+1 = (1 + 5) \mod 6 + 1 = 1$,集群 $1$ 为整个服务器集群其最小过载周期为 $60$ 故对本次询问输出 $60$ 且 $lastans$ 变为 $60$ 。