#4923. Delivery on Tree

0

Delivery on Tree

Delivery on Tree

题目描述

给定一棵有 NN 个顶点的二叉树。顶点编号为 11 到 NN,顶点 11 为根。第 ii 条边 (1≤i≤N−1)(1\leq i \leq N-1) 双向连接顶点 i+1i+1 和 顶点 Pi (≤i)P_i\ (\leq i)。 树上有一个篮子和 MM 个球。球编号为 11 到 MM,每个球 jj 有一个指定的起始顶点 SjS_j 和目标顶点 TjT_j。初始时,篮子为空并放在顶点 11,球放在各自的起始顶点上。 你可以任意次数按任意顺序执行下列操作。

令 vv 为当前篮子所在的顶点。执行以下三项之一: 选择一条与顶点 vv 相连的边,沿该边移动篮子到相邻的顶点。篮子内的球随篮子一起移动。 选择一个起始顶点为 vv 且仍放置在 vv 的球,并把它放入篮子。此操作只能在篮子中球的数量少于 KK 时执行(即篮子中不能包含 K+1K+1 个或更多球)。 从篮子中选择一个目标顶点为 vv 的球并把它取出,放置在顶点 vv。

当且仅当篮子最终为空并放回顶点 11,且球最终被放置在它们各自的目标顶点时,称该操作序列为可行操作序列。 由于频繁移动篮子很费力,篮子的移动路径应在返回顶点 11 之前恰好遍历每条边两次。求满足存在沿该路径执行的可行操作序列的此类路径的数量,对 998244353998244353 取模。

输入格式

输入由标准输入按如下格式给出: NN MM KK P1P_1 P2P_2 …\dots PN−1P_{N-1} S1S_1 T1T_1 S2S_2 T2T_2 ⋮\vdots SMS_M TMT_M

输出格式

输出满足存在沿该路径执行的可行操作序列的、在返回顶点 11 之前恰好遍历每条边两次的路径数量,对 998244353998244353 取模。

5 2 1
1 1 3 3
2 4
5 3
1
5 2 2
1 1 3 3
2 4
5 3
2
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
8

提示

2≤N≤1042\leq N \leq 10^4 1≤M≤2×1051\leq M \leq 2\times 10^5 1≤K≤1031\leq K \leq 10^3 1≤Pi≤i1\leq P_i \leq i 对于每个 v (1≤v≤N)v\ (1\leq v \leq N),至多有两个 ii 满足 Pi=vP_i=v。 1≤Sj,Tj≤N1\leq S_j, T_j \leq N Sj≠TjS_j \neq T_j 所有输入值均为整数。下图展示了给定的图。顶点旁的圆圈和方块分别表示球的起始顶点和目标顶点。 在每条边被恰好遍历两次并返回顶点 11 的路径中,只有一条路径存在沿该路径执行的可行操作序列,如下所示: 这里,你可以构造如下的可行操作序列:

    将篮子移动到顶点 $2$。 把球 $1$ 放入篮子。 将篮子移动到顶点 $1$。 将篮子移动到顶点 $3$。 将篮子移动到顶点 $4$。 将球 $1$ 从篮子中取出并放在顶点 $4$。 将篮子移动到顶点 $3$。 将篮子移动到顶点 $5$。 把球 $2$ 放入篮子。 将篮子移动到顶点 $3$。 将球 $2$ 从篮子中取出并放在顶点 $3$。 将篮子移动到顶点 $1$。

从样例输入 1 中 $K$ 的值增加了 $1$。这使得除了上图所示的路径之外,你还能为下面的路径构造可行操作序列。

标签: AtCoder|abc329G

来源

AtCoder|abc329G