AT_joisp2025_k 移住計画 (Migration Plan)

题目描述

JOI 国有 $N$ 个城市,这些城市编号为 $1$ 到 $N$。在这些城市之间,有 $N-1$ 条**单向**道路。具体地,对于每个 $i = 2, 3, \ldots, N$,从城市 $i$ 到城市 $P_i$ 有一条道路。这里保证 $1 \leq P_i < i$。 每个城市都有一个**危险度**。作为首都的城市 $1$ 的危险度为 $0$。对于城市 $i$($2 \leq i \leq N$),其危险度被定义为从城市 $i$ 通往城市 $1$ 的路径上经过的道路数。由于 JOI 国的结构,从城市 $i$ 到城市 $1$ 的路径恰好只有 $1$ 条。 现有 $K_i$ 只海狸分别住在城市 $i$($1 \leq i \leq N$)。JOI 国总统 Bitarou 制定了海狸们的迁移计划。迁移计划将在接下来的 $Q$ 天内执行。第 $j$ 天($1 \leq j \leq Q$),会发生以下 $3$ 种事件之一: - **迁移** 此时所有居住在危险度为 $X_j$ 的城市的海狸,会各自通过若干道路,前往它们从当前城市能通过道路到达的危险度为 $Y_j$ 的城市进行迁移。这里保证 $0 \leq Y_j < X_j$。由于 JOI 国的结构,对于每只海狸来说,目标迁移城市是唯一确定的。 - **接纳移民** 由于接纳了国外移民,居住在城市 $A_j$ 的海狸数量增加 $L_j$。 - **调查** 调查当前居住在城市 $B_j$ 的海狸数量。 作为 Bitarou 的下属,你发现你可以仅通过迁移计划的信息计算每次调查事件的结果,无需实际访问那些城市。 给定 JOI 国的结构、当前海狸的分布以及迁移计划的信息,请编写程序,计算每次调查事件的结果。

输入格式

输入以以下格式从标准输入给出: > $N$ $P_2$ $P_3$ $\cdots$ $P_N$ > $K_1$ $K_2$ $\cdots$ $K_N$ > $Q$ > (第 $1$ 个查询) > (第 $2$ 个查询) > $\vdots$ > (第 $Q$ 个查询) 每一个查询($1 \leq j \leq Q$)为一行若干空格分隔的整数。第一个整数为 $T_j$,其含义如下: - 当 $T_j = 1$ 时,接下来有两个整数 $X_j, Y_j$。表示第 $j$ 天发生的是迁移事件。那一天所有居住在危险度为 $X_j$ 的城市的海狸,会迁移到危险度为 $Y_j$ 的城市。 - 当 $T_j = 2$ 时,接下来有两个整数 $A_j, L_j$。表示第 $j$ 天发生的是接纳移民事件,城市 $A_j$ 的海狸增加 $L_j$。 - 当 $T_j = 3$ 时,接下来有一个整数 $B_j$。表示第 $j$ 天发生的是调查事件,需要输出当前城市 $B_j$ 的海狸数量。

输出格式

对于每一个 $T_j = 3$ 的查询,依次输出调查城市的海狸数量,每个占一行。

说明/提示

## 小题目 令城市的最大危险度为 $D$。 1. (4 分)$D = 1$。 2. (8 分)$N \leq 20$。 3. (13 分)$D \leq 20$。 4. (15 分)$T_j \neq 2$($1 \leq j \leq Q$),且 $T_j = 3$ 的 $j$ 的个数不超过 $5$。 5. (15 分)$T_j = 3$ 的 $j$ 的个数不超过 $5$。 6. (27 分)$T_j \neq 2$($1 \leq j \leq Q$)。 7. (18 分)无额外限制。 --- ### 样例解释 1 最开始,城市 $1,2,3,4$ 分别有 $1,3,4,3$ 只海狸。各城市的危险度分别为 $0,1,1,2$。 - 第 $1$ 天发生调查事件。需输出城市 $1$ 的海狸数量,即 $1$。 - 第 $2$ 天发生迁移事件。所有居住在危险度 $1$ 的城市(即城市 $2,3$)的海狸全部转移到危险度 $0$ 的城市(城市 $1$)。此时城市 $1,2,3,4$ 的海狸数量变为 $8,0,0,3$。 - 第 $3$ 天发生调查事件。需输出城市 $1$ 的海狸数量,即 $8$。 - 第 $4$ 天发生调查事件。需输出城市 $2$ 的海狸数量,即 $0$。 - 第 $5$ 天发生迁移事件。所有危险度为 $2$ 的城市(即城市 $4$)的海狸迁移到危险度为 $1$ 的城市(城市 $2$)。此时城市 $1,2,3,4$ 的海狸数量为 $8,3,0,0$。 - 第 $6$ 天发生调查事件。需输出城市 $2$ 的海狸数量,即 $3$。 此输入数据满足小题目 $2,3,4,5,6,7$ 的限制。 --- ### 样例解释 2 最开始,城市 $1,2,3$ 分别有 $3,1,4$ 只海狸。各城市的危险度分别为 $0,1,1$。 - 第 $1$ 天发生接纳移民事件。城市 $2$ 的海狸增加 $5$。此时城市 $1,2,3$ 的海狸数量为 $3,6,4$。 - 第 $2$ 天发生迁移事件。危险度为 $2$ 的城市没有海狸,因此无人迁移。 - 第 $3$ 天发生调查事件。需输出城市 $1$ 的海狸数量,即 $3$。 - 第 $4$ 天发生迁移事件。所有危险度为 $1$ 的城市(城市 $2,3$)的海狸迁移到危险度为 $0$ 的城市(城市 $1$)。此时城市 $1,2,3$ 的海狸数量为 $13,0,0$。 - 第 $5$ 天发生调查事件。需输出城市 $1$ 的海狸数量,即 $13$。 - 第 $6$ 天发生调查事件。需输出城市 $2$ 的海狸数量,即 $0$。 - 后面事件同理,省略。 此输入数据满足小题目 $1,2,3,7$ 的限制。 --- ### 样例解释 3 此输入数据满足小题目 $2,3,5,7$ 的限制。 ### 约束条件 - $2 \leq N \leq 2\,000\,000$。 - $1 \leq P_i < i$($2 \leq i \leq N$)。 - $0 \leq K_i \leq 100$($1 \leq i \leq N$)。 - $1 \leq Q \leq 2\,000\,000$。 - $T_j$ 取 $1,2,3$ 中的一个($1 \leq j \leq Q$)。 - 对于 $T_j = 1$,$0 \leq Y_j < X_j \leq N-1$($1 \leq j \leq Q$)。 - 对于 $T_j = 2$,$1 \leq A_j \leq N$,$1 \leq L_j \leq 100$($1 \leq j \leq Q$)。 - 对于 $T_j = 3$,$1 \leq B_j \leq N$($1 \leq j \leq Q$)。 - $T_j = 3$ 的 $j$ 至少有一个。 - 输入的所有值均为整数。 由 ChatGPT 5 翻译