CF620E New Year Tree
题目描述
新年假期结束了,但 Resha 不想扔掉他的圣诞树。他邀请了他最好的朋友 Kerim 和 Gural 来帮助他重新装饰圣诞树。
Resha 的圣诞树是一棵无向树,有 $n$ 个顶点,根在顶点 $1$。
你需要处理两种类型的操作:
1. 将顶点 $v$ 的子树中所有顶点的颜色改为颜色 $c$。
2. 查找顶点 $v$ 的子树中不同颜色的数量。
输入格式
第一行包含两个整数 $n, m$($1 \le n, m \le 4 \cdot 10^5$),表示树中的顶点数和操作数。
第二行包含 $n$ 个整数 $c_i$($1 \le c_i \le 60$),表示第 $i$ 个顶点的颜色。
接下来的 $n-1$ 行,每行包含两个整数 $x_j, y_j$($1 \le x_j, y_j \le n$),表示第 $j$ 条边的两个顶点。保证输入构成一棵树。
最后 $m$ 行包含操作。每个操作以整数 $t_k$($1 \le t_k \le 2$)开头,表示第 $k$ 个操作的类型。
- 对于类型 $1$ 的操作,接下来是两个整数 $v_k, c_k$($1 \le v_k \le n, 1 \le c_k \le 60$),表示要将其子树重新着色为颜色 $c_k$ 的顶点编号。
- 对于类型 $2$ 的操作,接下来是一个整数 $v_k$($1 \le v_k \le n$),表示需要操作其子树中不同颜色数量的顶点编号。
输出格式
对于每个类型 $2$ 的操作,输出一个整数,表示该顶点子树中不同颜色的数量。
说明/提示
译者注:在俄罗斯语境中,New Year Tree 与 Christmas tree 意义相同,为了方便理解故译为圣诞树。