#aBC329G. [ABC329G] Delivery on Tree

[ABC329G] Delivery on Tree

AT_abc329_g [ABC329G] Delivery on Tree

题目描述

给定一棵有 NN 个顶点的二叉树。顶点编号为 11NN,顶点 11 是根。第 ii 条边(1iN11\leq i\leq N-1)连接顶点 i+1i+1 和顶点 PiP_iPiiP_i\leq i),为双向边。

在这棵树上有 11 个篮子和 MM 个球。球编号为 11MM,对于每个球 jj,给定其起始顶点 SjS_j目标顶点 TjT_j。最初,篮子为空,放在顶点 11,每个球放在其起始顶点。

你可以任意次数、任意顺序地进行以下操作:

  • 设当前篮子在顶点 vv,可以进行以下任一操作:
    • 选择与顶点 vv 相连的一条边,沿该边将篮子移动到相邻顶点。此时,篮子中的所有球也会一起移动。
    • 如果有起始顶点为 vv 且当前还在起始顶点的球,可以选择其中一个放入篮子。只有当篮子中球的数量小于 KK 时才能进行此操作(即篮子中不能有 K+1K+1 个或更多的球)。
    • 如果有目标顶点为 vv 且当前在篮子中的球,可以选择其中一个从篮子中取出,放到顶点 vv 上。

当所有操作结束时,若篮子为空且在顶点 11,每个球都在其目标顶点,则称该操作序列为良好操作序列

由于频繁移动篮子很累,因此希望篮子的移动路径限定为:每条边恰好经过 22 次,并最终回到顶点 11。在所有满足此条件的路径中,问有多少种路径可以使得存在良好操作序列。请输出该数量对 998244353998244353 取模的结果。

输入格式

输入通过标准输入给出,格式如下:

NN MM KK P1P_1 P2P_2 \dots PN1P_{N-1} S1S_1 T1T_1 S2S_2 T2T_2 \vdots SMS_M TMT_M

输出格式

请输出所有满足条件的路径数对 998244353998244353 取模的结果。

输入输出样例 #1

输入 #1

5 2 1
1 1 3 3
2 4
5 3

输出 #1

1

输入输出样例 #2

输入 #2

5 2 2
1 1 3 3
2 4
5 3

输出 #2

2

输入输出样例 #3

输入 #3

15 4 2
1 2 1 4 2 3 4 7 3 7 5 9 11 8
14 12
5 4
13 15
5 12

输出 #3

8

说明/提示

限制条件

  • 2N1042\leq N\leq 10^4
  • 1M2×1051\leq M\leq 2\times 10^5
  • 1K1031\leq K\leq 10^3
  • 1Pii1\leq P_i\leq i
  • 对于所有 vv1vN1\leq v\leq N),满足 Pi=vP_i=vii 的个数至多为 22
  • 1Sj,TjN1\leq S_j, T_j\leq N
  • SjTjS_j\neq T_j
  • 所有输入均为整数

样例解释 1

给定的图如下图所示。顶点旁的圆和方块分别表示该编号球的起始顶点和目标顶点。

在所有每条边恰好经过 22 次并回到顶点 11 的路径中,只有下图所示的路径可以使得存在良好操作序列。

具体来说,可以按如下顺序操作:

  1. 将篮子移动到顶点 22
  2. 将球 11 放入篮子。
  3. 将篮子移动到顶点 11
  4. 将篮子移动到顶点 33
  5. 将篮子移动到顶点 44
  6. 将球 11 从篮子中取出,放到顶点 44
  7. 将篮子移动到顶点 33
  8. 将篮子移动到顶点 55
  9. 将球 22 放入篮子。
  10. 将篮子移动到顶点 33
  11. 将球 22 从篮子中取出,放到顶点 33
  12. 将篮子移动到顶点 11

样例解释 2

与样例 1 相比,KK 的值增加了 11。因此,除了上述路径外,还可以通过下图所示的路径构成良好操作序列。

由 ChatGPT 4.1 翻译