CF696E ...Wait for it...
题目描述
Barney 正在寻找他的梦中情人。他住在纽约市。纽约市有 $n$ 个路口,编号从 $1$ 到 $n$,并有 $n-1$ 条道路相连。我们将纽约市视为一棵以 $1$ 号路口为根的有根树。纽约市中有 $m$ 个女孩,第 $i$ 个女孩住在 $c_{i}$ 号路口,她的初始体重为 $i$ 磅。
Barney 认为女孩 $x$ 比女孩 $y$ 更优秀,当且仅当:女孩 $x$ 的体重严格小于女孩 $y$,或者两人同重但 $x$ 所居住路口的编号严格小于 $y$,即 $c_{x} < c_{y}$。因此,对于任何两位女孩,总有一人比另一人优秀。
接下来的 $q$ 天里,每天会发生一件事件。共有两种类型的事件:
1. Barney 从路口 $v$ 走到路口 $u$。他会在经过路线上的所有路口中挑选最多 $k$ 位(未被邀请过的)最优秀的女孩,邀请她们到家里试试看是否是他的梦中情人。如果路径上未被邀请过的女孩不足 $k$ 人,则邀请所有人。
2. 居住在以路口 $v$ 为根的子树(包括 $v$ 本身)内的女孩体重都会增加 $k$ 磅。
你的任务是,对于每一次第一种类型的事件,请输出 Barney 会邀请哪些女孩。
输入格式
第一行包含三个整数 $n$、$m$、$q$($1 \leq n, m, q \leq 10^5$),分别表示纽约市的路口数、女孩数、事件数。
接下来的 $n-1$ 行,每行两个整数 $v$ 和 $u$($1 \leq v, u \leq n, v \neq u$),表示一条道路连接了路口 $v$ 和 $u$。
接下来一行包含 $m$ 个整数 $c_1, c_2, ..., c_m$($1 \leq c_i \leq n$),第 $i$ 个女孩居住的路口编号。
接下来的 $q$ 行,每行描述一个事件,按时间顺序排列。每行以一个整数 $t$($1 \leq t \leq 2$)开头,表示事件类型。
如果 $t = 1$,则该行为 $t\ v\ u\ k$($1 \leq v, u, k \leq n$),表示 Barney 的路径端点和他最多邀请的人数。
如果 $t = 2$,则该行为 $t\ v\ k$($1 \leq v \leq n, 1 \leq k \leq 10^9$),表示所有在以 $v$ 号路口为根的子树中的女孩(包括自己)体重增加 $k$ 磅。
输出格式
对于每一个第一种类型的事件,输出一行,包含一个整数 $t$,表示此次邀请的女孩数,后接 $t$ 个不同的女孩编号 $g_1, g_2, ..., g_t$,按照从优秀到次优的顺序输出。
说明/提示
对于第一个样例:
1. 路口 $4$ 的子树中的女孩体重增加 $3$ 磅。这些女孩的编号是 $1,3,5,4,7$。
2. Barney 从路口 $2$ 走到 $1$。路径上的女孩有 $1,2,3,5,6,7$,体重分别为 $4,2,6,8,6,10$。所以他邀请了 $2$ 号和 $1$ 号女孩。
3. Barney 从路口 $4$ 走到 $2$。路径上的女孩有 $3,5,7$,体重分别为 $6,8,10$。所以他邀请了 $3$ 号女孩。
4. 路口 $2$ 的子树中的所有女孩体重增加 $10$。没有未被邀请的女孩,因此无变化。
5. 路口 $1$ 的子树中的所有女孩体重增加 $10$。剩下未被邀请的女孩为 $4,5,6,7$。
6. Barney 从路口 $2$ 走到 $4$。路径上的女孩有 $5,7$,体重分别为 $18,20$。邀请 $5$ 号女孩。
7. Barney 从路口 $2$ 走到 $3$。该路径上没有女孩。
8. 路口 $5$ 的子树内的女孩体重增加 $2$,唯一的女孩是 $4$ 号。
9. 路口 $4$ 的子树内的女孩体重增加 $9$,涉及的女孩有 $4,6,7$。
10. Barney 从路口 $3$ 走到 $5$,路径上只有 $4$ 号女孩。
11. Barney 从路口 $1$ 走到 $2$,路径上的女孩为 $6,7$,体重分别为 $16,29$。
由 ChatGPT 5 翻译