#P14679. [Bulgarian2022]Colors
[Bulgarian2022]Colors
题面描述
马修在喝下今天的第五杯咖啡后,开始看到对面树上的颜色在不断变化。就在这时,他觉得从树上的一个点走到另一个点会是一件很有趣的事。由于他现在的状态并不适合自己完成这件事,于是他把任务交给了你。
马修的树有 个点,编号为 到 ,根节点为 。每个点一开始都被染成 到 中的某个颜色(允许多个点颜色相同)。
接下来有 个操作,分为三种类型:
- 将从 到 的简单路径上的所有点染成颜色 ;
- 将点 的整棵子树中的所有点染成颜色 ;
- 询问从 到 的路径上,颜色发生变化的次数。
对于第 3 类询问,若 ,答案视为 。更正式地,若从 到 的路径为:
则答案为满足下式的 的个数:
$$1 \le j < k,\quad \text{color}(P_j) \ne \text{color}(P_{j+1})$$这里,点 的子树指的是:所有从该点到根的路径经过 的点所组成的集合(含 自身)。
输入格式
第一行一个整数 ,表示树上的点数。
接下来 行,每行两个整数 ,表示树的一条边。
第 行包含 个整数 ,表示每个点的初始颜色。
接下来一行一个整数 ,表示操作数。
随后 行描述操作,格式如下:
1 Ui Vi Ci:将路径 上所有点染成颜色 ;2 Ui Ci:将 的整棵子树染成颜色 ;3 Ui Vi:询问路径 上颜色变化的次数。
输出格式
对于每个 3 类操作,输出一行一个整数表示答案。
数据范围
子任务与评分
| 子任务 | 分值 | 操作类型 | |
|---|---|---|---|
| 1 | 5 | 1000 | 1,2,3 |
| 2 | 15 | 3 | |
| 3 | 25 | 2,3 | |
| 4 | 45 | 1,3 | |
| 5 | 10 | 1,2,3 |
样例
输入
6
1 2
2 6
2 3
3 4
3 5
1 1 3 1 2 1
5
3 6 4
1 6 4 2
3 1 5
2 2 4
3 3 5
输出
2
1
0