#P1159. 后花园的树

后花园的树

题目描述

菜哭武的后花园里种着一棵树,这棵树有 nn 个节点和 n1n-1 条边,每个节点都涂着一种颜色。菜哭武打算在接下来的 mm 天里,每天执行以下两个操作之一:

  1. 菜哭武选择某一种颜色和树上的某一个节点,将这个节点涂上这种颜色(会将该节点原有的颜色覆盖)。
  2. 菜哭武选择一种颜色,然后询问这棵树上由所有涂着这种颜色的节点构成的子树含有多少个节点(原树上的某个点集 SS 构成的子树 TT 的定义是:如果 uSu \in SvSv \in S,那么原树 uuvv 路径上的所有点都属于这棵子树 TT)。如果这棵树上没有这种颜色的节点,那么定义询问的结果为 00

输入格式

第一行两个整数 nnmm1n,m1051 \leq n, m \leq 10^5),分别代表树的节点个数和天数。

第二行到第 nn 行,每行两个整数 uuvv1u,vn1 \leq u, v \leq n),代表节点 uuvv 之间有一条边。

n+1n + 1 行有 nn 个整数,用空格隔开,第 ii 个数代表节点 ii 初始涂的颜色 cic_i1cin1 \leq c_i \leq n)。

接下来 mm 行,每行开头一个数 opop,代表操作的类型。op=1op = 1 代表涂色,op=2op = 2 代表询问。

op=1op = 1,接下来会有两个整数 xxyy1x,yn1 \leq x, y \leq n),代表将节点 xx 涂成颜色 yy

op=2op = 2,接下来会有一个整数 xx,代表询问颜色为 xx 的节点构成子树含有的节点个数。

输出格式

对于每一个 op=2op = 2 的操作,输出一行整数,代表询问的结果。

样例输入

5 5
3 1
2 5
2 1
3 4
3 1 3 1 2 
2 1
2 5
2 2
1 2 5
2 5

样例输出

4
0
1
1