#P17025. [ROI 2026 Day2] 好的染色 - 8

[ROI 2026 Day2] 好的染色 - 8

题目描述

伊尔达尔决定投身抽象艺术。他选择了一棵有 nn 个顶点的有根树作为画作的基础:这是一张无环图,其中顶点 11 被指定为。根没有父节点;对于任意其他顶点 u2u \ge 2,从 uu 到根的路径上的第一个顶点称为 uu父节点,记作 pup_u。以 vv 为父节点的顶点称为 vv孩子。没有孩子的顶点称为叶子。保证根至少有两个孩子。

我们对树执行深度优先遍历:首先访问根,然后按顺序递归地以同样方式访问其孩子的子树。树的顶点按照该深度优先遍历的顺序编号。因此,对于每个 ii11nn,顶点 ii 的子树中的顶点编号构成一段连续的整数。

设树中有 mm 片叶子。伊尔达尔将它们按编号升序写出,得到序列 l1<l2<<lml_1 < l_2 < \ldots < l_m,并添加边连接所有形如 (lj,lj+1)(l_j, l_{j+1}) 的叶子对,同时连接 lml_ml1l_1。所添加的环 l1l2lml1l_1 \to l_2 \to \ldots \to l_m \to l_1 称为外环

伊尔达尔将得到的图画在平面上,方式如下:外环被画作一个圆,叶子 l1,l2,,lml_1, l_2, \ldots, l_m 沿圆周逆时针排列,圆周上相邻顶点间的弧表示外环的边。树的其他顶点表示为位于圆内的不同点。树的边用顶点间的线段表示,且顶点和边的位置使得边线段之间没有公共内点。下图展示了树的一种绘制方式。

:::align{center} :::

在伊尔达尔的图中,外环圆周内部的平面部分被图的边分割成了 mm 个区域,称为。如果两个不同的面共享一条边,则称它们为相邻的面。例如,上图中得到 5 个面,分别记为 Γ1,Γ2,Γ3,Γ4\Gamma_1, \Gamma_2, \Gamma_3, \Gamma_4Γ5\Gamma_5

:::align{center} :::

上图中相邻的面对为 (Γ1,Γ2)(\Gamma_1, \Gamma_2)(Γ1,Γ5)(\Gamma_1, \Gamma_5)(Γ2,Γ3)(\Gamma_2, \Gamma_3)(Γ2,Γ4)(\Gamma_2, \Gamma_4)(Γ2,Γ5)(\Gamma_2, \Gamma_5)(Γ3,Γ4)(\Gamma_3, \Gamma_4)(Γ4,Γ5)(\Gamma_4, \Gamma_5)

为了完成画作,伊尔达尔计划将每个面染成 kk 种颜色之一。一种染色被称为正确的,如果相邻的面被染成不同的颜色。伊尔达尔将图画中不同正确染色的个数对 109+710^9+7 取模的结果称为该图画的潜能

在评估了初始图画的潜能之后,伊尔达尔对该图的边进行了 qq 次操作。考虑第 ii 次操作,它由一个数 viv_i 给出,并对连接顶点 viv_ipvip_{v_i} 的树边生效。如果该边当前在图中可见,则伊尔达尔从图中删除该边;如果该边当前不在图中,则重新画上。每次修改后,图中的面的集合可能发生变化:删除边时,两个面可能合并成一个;画上边时,一个面可能分裂成两个。例如,若在上图中删除边 898 - 9,则面 Γ4\Gamma_4Γ5\Gamma_5 合并成一个面 Γ4+5\Gamma_{4+5}

:::align{center} :::

此时图中相邻的面对为 (Γ1,Γ2)(\Gamma_1, \Gamma_2)(Γ1,Γ4+5)(\Gamma_1, \Gamma_{4+5})(Γ2,Γ3)(\Gamma_2, \Gamma_3)(Γ2,Γ4+5)(\Gamma_2, \Gamma_{4+5})(Γ3,Γ4+5)(\Gamma_3, \Gamma_{4+5})

每次操作后,需要重新确定该图画的潜能:即用不超过 kk 种颜色对面进行正确染色的方案数对 109+710^9+7 取模的结果。

输入格式

第一行包含一个整数 tt1t100001 \le t \le 10\,000),表示测试数据的组数。接下来是 tt 组数据的描述。

每组数据的第一行包含三个整数 nnkkqq3n1063 \le n \le 10^62k1092 \le k \le 10^90q3000000 \le q \le 300\,000),分别表示树中的顶点数、可用颜色数和执行的操作次数。

每组数据的第二行包含 p2,p3,,pnp_2, p_3, \ldots, p_n1pi<i1 \le p_i < i),其中 pip_i 是树中顶点 ii 的父节点。保证树的顶点按深度优先遍历顺序编号,且数值 11p2,,pnp_2, \ldots, p_n 中出现至少两次。

随后是 qq 行,其中第 ii 行包含一个整数 viv_i2vin2 \le v_i \le n),表示第 ii 次操作的参数。

保证所有测试数据中 nn 的总和不超过 10610^6,所有测试数据中 qq 的总和不超过 300000300\,000

输出格式

输出 q+1q+1 个数:第一个数为初始图画的潜能,其余分别为每次操作后图画的潜能。

2
3 4 5
1 1
2
3
2
3
3
9 4 8
1 2 2 1 5 5 1 8
9
8
3
5
4
3
9
8
12
4
4
4
12
4
96
48
48
24
12
12
12
12
36

提示

子任务

定义树的高度为从根到其他顶点的简单路径上的最大边数。

子任务 分数 nn kk qq 额外限制 依赖子任务
1 6 n=3n = 3 k4k \le 4 q10q \le 10 t100t \le 100p2=p3=1p_2 = p_3 = 1
2 9 n1000\sum n \le 1\,000 -- q=0q = 0 pi=2i21p_{i} = 2 \cdot \lfloor \frac{i}{2} \rfloor - 1nn 为奇数
3 10 q1000\sum q \le 1\,000 pi=1p_i = 1 1
4 n9n \le 9 k4k \le 4 q=0q = 0 t100t \le 100
5 3 q10q \le 10 4
6 2 n1000\sum n \le 1\,000 k=2k=2 q=0q = 0 --
7 11 -- 2, 4, 6
8 15 q1000\sum q \le 1\,000 1–7
9 4 n5000\sum n \le 5\,000 q5000\sum q \le 5\,000 1–8
10 3 n10000\sum n \le 10\,000 q10000\sum q \le 10\,000 1–9
11 6 n100000\sum n \le 100\,000 q5000\sum q \le 5\,000
12 7 q100000\sum q \le 100\,000 高度不超过 2020 1, 4, 5
13 14 -- 1–12
14 3 n300000\sum n \le 300\,000 q300000\sum q \le 300\,000 1–13
15 n1000000\sum n \le 1\,000\,000 1–14

翻译由 DeepSeek V4 Pro 完成