#CF620E. New Year Tree
New Year Tree
好的,这是您要求的算法题面中文翻译和排版:
E. 新年树
每个测试的时间限制: 秒
每个测试的内存限制: MB
输入:标准输入
输出:标准输出
新年假期结束了,但 Resha 不想扔掉新年树。他邀请了他最好的朋友 Kerim 和 Gural 来帮忙重新装饰这棵新年树。
这棵新年树是一棵无向树,有 个顶点,根在顶点 。
你需要处理以下两种类型的查询:
- 将顶点 的子树中所有顶点的颜色改为颜色 。
- 查询顶点 的子树中不同颜色的数量。
输入
第一行包含两个整数 ()—— 树的顶点数和查询数。
第二行包含 个整数 ()—— 第 个顶点的颜色。
接下来的 行每行包含两个整数 ()—— 第 条边的两个顶点。保证给出的是一棵正确的无向树。
最后的 行包含查询的描述。每个查询描述以整数 ()开头 —— 第 个查询的类型。对于第一类查询,后面跟着两个整数 ()—— 需要重新着色的子树的根顶点编号和新的颜色 。对于第二类查询,后面跟着一个整数 ()—— 需要查询其子树中不同颜色数量的顶点编号。
输出
对于每个第二类查询,输出一个整数 —— 查询中给出的顶点子树中不同颜色的数量。
每个数字应按查询在输入中出现的顺序,单独打印在一行上。
示例
输入示例 1:
7 10
1 1 1 1 1 1 1
1 2
1 3
1 4
3 5
3 6
3 7
1 3 2
2 1
1 4 3
2 1
1 2 5
2 1
1 6 4
2 1
2 2
2 3
输出示例 1:
2
3
4
5
1
2
输入示例 2:
23 30
1 2 2 6 5 3 2 1 1 1 2 4 5 3 4 4 3 3 3 3 3 4 6
1 2
1 3
1 4
2 5
2 6
3 7
3 8
4 9
4 10
4 11
6 12
6 13
7 14
7 15
7 16
8 17
8 18
10 19
10 20
10 21
11 22
11 23
2 1
2 5
2 6
2 7
2 8
2 9
2 10
2 11
2 4
1 12 1
1 13 1
1 14 1
1 15 1
1 16 1
1 17 1
1 18 1
1 19 1
1 20 1
1 21 1
1 22 1
1 23 1
2 1
2 5
2 6
2 7
2 8
2 9
2 10
2 11
2 4
输出示例 2:
6
1
3
3
2
1
2
3
5
5
1
2
2
1
1
1
2
3