#loj5735. 「OOI 2026 Day1」萨沙的任务

「OOI 2026 Day1」萨沙的任务

#5735. 「OOI 2026 Day1」萨沙的任务

标签: 传统 | 时间限制: 5000 ms | 内存限制: 512 MiB |

题目描述

题目译自 Open Olympiad in Informatics 2026 Day1 T3 「Задачи от Саши」 / 「Tasks from Sasha

萨沙最近搬进了一栋多层建筑。这栋建筑共有 nn 层,编号从 11nn。每一层都恰好住着一名住户。楼层之间建有 n1n-1 段楼梯,但这些楼梯不一定连接相邻的楼层。已知对于除第 11 层以外的每一层,都恰好有一段楼梯通往更低的楼层。具体而言,对于第 ii(2in)(2 \leq i \leq n),这段楼梯通向第 pip_i 层。

萨沙准备解决 kk 个任务,编号从 11kk。萨沙计算出,对于编号为 ii 的任务,在第 xix_i 层解决是最理想的。由于这些任务各不相同,所有的 xix_i 也互不相同。

独自一人解决任务非常枯燥,所以对于每个任务,萨沙都想邀请至少一名住户共同参与。然而,这栋楼的住户非常讨厌爬楼梯,他们只愿意走下楼梯前往任务所在的楼层。因此,只有在可以从第 jj 层出发、通过若干段(可能为零)向低楼层延伸的楼梯到达第 xix_i 层的情况下,萨沙才能邀请第 jj 层的住户来解决任务 ii。换句话说,只有当满足 j=xij=x_i、或 pj=xip_j=x_i、或 ppj=xip_{p_j}=x_i 等条件时,第 jj 层的住户才能参与任务 ii

住户们也非常讨厌多走不必要的下坡路。因此,如果萨沙邀请了一组人共同解决某个任务,只有在这些人都能到达的最高楼层,他们才愿意聚在一起解决该任务。例如,如果从第 33 层有一段楼梯通向第 22 层,萨沙将无法邀请第 22 层和第 33 层的住户在第 11 层解决任务,因为他们完全可以在更高的第 22 层聚集。

萨沙不想显得太爱打扰人,所以对于每一层的住户,萨沙最多只会邀请其参与一个任务。当然,萨沙也可以选择不邀请某些楼层的住户。

萨沙还有一个最喜欢的任务,除了你他不会告诉任何人。但为了让他告诉你这个任务,你需要帮他计算出有多少种不同的邀请方案,使得上述所有限制都能得到满足。如果至少有一个任务由不同的住户集合解决,则认为这两种方案是不同的。

输入格式

第一行包含两个整数 nnkk (3n106,1kmin(n,2000))(3 \leq n \leq 10^6, 1 \leq k \leq \min(n, 2000)),分别表示楼层数量和任务数量。

第二行包含 kk 个整数 x1,x2,,xkx_1, x_2, \dots, x_k (1xin)(1 \leq x_i \leq n),表示萨沙解决每个任务所在的楼层。保证所有的 xix_i 互不相同。

第三行包含 n1n-1 个整数 p2,p3,,pnp_2, p_3, \dots, p_n (1pi<i)(1 \leq p_i < i),其中 pip_i 描述了从第 ii 层通向更低楼层的楼梯所连接的楼层编号。

输出格式

输出一个整数,即满足所有限制的邀请住户方案总数对 998244353998244353 取模后的结果。

样例 1

输入

3 1
1
1 1

输出

5

在第一个样例中,萨沙共有五种邀请住户的方式:

  • 仅邀请第 11 层的住户;
  • 邀请第 11 层和第 22 层的住户;
  • 邀请第 11 层和第 33 层的住户;
  • 邀请第 11 层、第 22 层和第 33 层的住户;
  • 邀请第 22 层和第 33 层的住户。

萨沙不能只邀请第 22 层的住户来解决任务,因为那样的话,所有想解决任务的住户能聚集的最高楼层将是第 22 层,而萨沙希望在第 11 层解决任务。

在第二个样例中,两种不同的合适邀请方案如下:

  • 邀请第 22 层和第 66 层的住户解决第一个任务,邀请第 55 层的住户解决第二个任务。
  • 邀请第 22 层的住户解决第一个任务,邀请第 55 层和第 66 层的住户解决第二个任务。

样例 2

输入

6 2
2 5
1 2 3 4 5

输出

12

样例 3

输入

7 3
2 7 1
1 1 2 2 3 3

输出

62

数据范围与提示

详细子任务附加限制及分值如下表所示。其中子任务 00 是样例。

子任务 分值 附加限制 子任务依赖
11 1212 n10,k10n \leq 10, k \leq 10 00
22 1313 n500,k500n \leq 500, k \leq 500 0,10, 1
33 99 k=1k = 1 -
44 1010 pi=i1p_i = i - 1
55 1313 每个楼层最多与两个更高楼层相连 44
66 1414 n200000,k500n \leq 200000, k \leq 500 0,1,20, 1, 2
77 1111 k500k \leq 500 0,1,2,3,60, 1, 2, 3, 6
88 1010 k1000k \leq 1000 0,1,2,3,6,70, 1, 2, 3, 6, 7
99 88 无额外限制 0,1,2,3,4,5,6,7,80, 1, 2, 3, 4, 5, 6, 7, 8