AT_abc329_g [ABC329G] Delivery on Tree

题目描述

给定一棵有 $N$ 个顶点的二叉树。顶点编号为 $1$ 到 $N$,顶点 $1$ 是根。第 $i$ 条边($1\leq i\leq N-1$)连接顶点 $i+1$ 和顶点 $P_i$($P_i\leq i$),为双向边。 在这棵树上有 $1$ 个篮子和 $M$ 个球。球编号为 $1$ 到 $M$,对于每个球 $j$,给定其**起始顶点** $S_j$ 和**目标顶点** $T_j$。最初,篮子为空,放在顶点 $1$,每个球放在其起始顶点。 你可以任意次数、任意顺序地进行以下操作: - 设当前篮子在顶点 $v$,可以进行以下任一操作: - 选择与顶点 $v$ 相连的一条边,沿该边将篮子移动到相邻顶点。此时,篮子中的所有球也会一起移动。 - 如果有起始顶点为 $v$ 且当前还在起始顶点的球,可以选择其中一个放入篮子。只有当篮子中球的数量小于 $K$ 时才能进行此操作(即篮子中不能有 $K+1$ 个或更多的球)。 - 如果有目标顶点为 $v$ 且当前在篮子中的球,可以选择其中一个从篮子中取出,放到顶点 $v$ 上。 当所有操作结束时,若篮子为空且在顶点 $1$,每个球都在其目标顶点,则称该操作序列为**良好操作序列**。 由于频繁移动篮子很累,因此希望篮子的移动路径限定为:每条边恰好经过 $2$ 次,并最终回到顶点 $1$。在所有满足此条件的路径中,问有多少种路径可以使得存在良好操作序列。请输出该数量对 $998244353$ 取模的结果。

输入格式

输入通过标准输入给出,格式如下: > $N$ $M$ $K$ $P_1$ $P_2$ $\dots$ $P_{N-1}$ $S_1$ $T_1$ $S_2$ $T_2$ $\vdots$ $S_M$ $T_M$

输出格式

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

说明/提示

## 限制条件 - $2\leq N\leq 10^4$ - $1\leq M\leq 2\times 10^5$ - $1\leq K\leq 10^3$ - $1\leq P_i\leq i$ - 对于所有 $v$($1\leq v\leq N$),满足 $P_i=v$ 的 $i$ 的个数至多为 $2$ - $1\leq S_j, T_j\leq N$ - $S_j\neq T_j$ - 所有输入均为整数 ## 样例解释 1 给定的图如下图所示。顶点旁的圆和方块分别表示该编号球的起始顶点和目标顶点。 ![](https://img.atcoder.jp/abc329/afa9812169c0c570270c32e5aa1c814a.jpg) 在所有每条边恰好经过 $2$ 次并回到顶点 $1$ 的路径中,只有下图所示的路径可以使得存在良好操作序列。 ![](https://img.atcoder.jp/abc329/b80e2b20635a90cf935fa4bbc89872fd.jpg) 具体来说,可以按如下顺序操作: 1. 将篮子移动到顶点 $2$。 2. 将球 $1$ 放入篮子。 3. 将篮子移动到顶点 $1$。 4. 将篮子移动到顶点 $3$。 5. 将篮子移动到顶点 $4$。 6. 将球 $1$ 从篮子中取出,放到顶点 $4$。 7. 将篮子移动到顶点 $3$。 8. 将篮子移动到顶点 $5$。 9. 将球 $2$ 放入篮子。 10. 将篮子移动到顶点 $3$。 11. 将球 $2$ 从篮子中取出,放到顶点 $3$。 12. 将篮子移动到顶点 $1$。 ## 样例解释 2 与样例 1 相比,$K$ 的值增加了 $1$。因此,除了上述路径外,还可以通过下图所示的路径构成良好操作序列。 ![](https://img.atcoder.jp/abc329/31ce5331d578d5f2d0c0fe86751fd60d.jpg) 由 ChatGPT 4.1 翻译