P4242 树上的毒瘤
题目背景
Salamander 开心地把一大袋毒瘤带回了家,把他们染上了不同的颜色,并把他们挂在了院子里的树上。
题目描述
这棵树上有 $n$ 个节点,由 $n-1$ 条树枝相连。初始时树上都挂了一个毒瘤,颜色为 $c_i$。接下来 Salamander 将会进行 $q$ 个操作。
Salamander 有时会修改树上某个点到另外一个点的简单路径上所有毒瘤的颜色。
对于给定的树上**某个点集 $\bm{S}$**,Salamander 还定义了某个点的权值:
$$W_i=\sum_{j\in S}T(i,j)$$
其中 $T(i,j)$ 表示 $i$ 到 $j$ 的路径上毒瘤颜色的**段数**,比如 $i$ 到 $j$ 的路径上毒瘤颜色为 $1223312$ 时,颜色段数为 $5$。
Salamander 对树上的毒瘤们的状态很感兴趣,所以有时会指定树上 $m$ 个节点作为点集,询问这 $m$ 个节点的权值。
输入格式
第一行包括两个正整数 $n$、$q$,表示树上的节点数和操作个数。
第二行包括用空格隔开的 $n$ 个正整数 $c_i$,表示树上每个节点初始的毒瘤颜色。
接下来 $n-1$ 行,每行两个正整数 $u$、$v$,表示树上有一条连接 $u$ 和 $v$ 的边。
接下来描述 $q$ 个操作:
1. 若给出的第一个整数等于 $1$,那么接下来将会有三个正整数 $u$、$v$、$y$,表示将树上编号为 $u$ 的点到编号为 $v$ 的点的简单路径上的毒瘤颜色全都改为 $y$。
2. 若给出的第一个整数等于 $2$,那么接下来将会有一个正整数 $m$,表示指定的树上节点个数。下一行将会有 $m$ 个用空格隔开的互不相同的正整数,表示当前询问给定的 $m$ 个节点。
输出格式
若干行,对于每个 $2$ 操作输出对应的答案。
说明/提示
保证输入数据合法。
对于 $30\%$ 的数据,有 $1\leq n,q\leq 1000$,$\sum m\leq 5000$。
对于 $60\%$ 的数据,有 $1\leq n,q\leq 20000$,$\sum m\leq 100000$。
对于 $100\%$ 的数据,有 $1\leq n,q\leq 100000$,$c_i,y\leq 10^9$,$\sum m\leq 200000$,$m\leq n$。