P15407 [NOISG 2026 Prelim] 米浴的数据结构课(暂无数据)
题目描述
米浴正在上数据结构课!
在数据结构课中,她学习了树的带权重心。
树的带权重心是这么定义的:
设 $a_i (a_i \ge 1)$ 表示 $i$ 的权值。点 $u$ 是树的重心当且仅当删去 $u$ 节点后,剩下的每个联通块的权值和都 $\le \frac{1}{2} \sum a_i$。
现在她的手上有一颗 $n$ 个节点的树,根节点是 1,点 $i$ 的点权为 $a_i$。
她想找到这棵树的带权重心,但是这太简单了。因此,她给自己加了 $q$ 次操作,每次操作有两种可能:
- $1\ u\ v\ w$,表示给所有 $u$ 到 $v$ 路径上的节点的点权增加 $w$
- $2\ u\ w$,表示给所有 $u$ 的子树内的节点的点权增加 $w$
在每次操作后,她都希望找到这棵树的所有带权重心。如果有多个,那么按照编号从小到大的顺序输出。
输入格式
本题有多组数据。
第一行一个正整数 $T (1 \le T \le 10000)$ 表示数据组数
对于每组数据,第一行两个整数 $n, q (1 \le n, q \le 10^5)$
接下来一行 $n$ 个整数,分别是 $a_1, a_2, \ldots, a_n (1 \le a_i \le 10^8)$
接下来 $n-1$ 行,每行两个整数 $u_i, v_i$,表示树上的一条边
接下来 $q$ 行,第 $i$ 行第一个整数是 $op_i \in \{1, 2\}$
- $op_i = 1$,接下来三个整数 $u, v, w (1 \le u, v \le n, w \le 10^8)$
- $op_i = 2$,接下来两个整数 $u, w (1 \le u \le n, w \le 10^8)$
保证 $\sum n, \sum q \le 10^5$,输入的树是一棵树。
输出格式
对于每组数据,输出 $q$ 行,第 $i$ 行输出若干个整数,分别表示经过 $i$ 次操作后树的所有带权重心按照编号从小到大排序后的结果。
说明/提示
### 子任务
对于 100% 的数据,均满足
$1 \le T \le 10000, 1 \le \sum n, \sum q \le 10^5, 1 \le a_i, w \le 10^8$
|子任务编号|限制条件|分值|
|:-:|:-:|:-:|
|1|$\sum n, \sum q \le 1000$|20|
|2|满足树是一条链|10|
|3|满足树是菊花图|10|
|4|满足树的形态和操作都是均匀随机生成的|20|
|5|没有额外限制|40|