C0901 [SDOI2011]染色

内存限制:512 MB 时间限制:2000 ms

题目描述

给定一棵有 $n$ 个节点的无根树和 $m$ 个操作,操作有 $2$ 类:

  1. 将节点 $a$ 到节点 $b$ 路径上所有点都染成颜色 $c$;

  2. 询问节点 $a$ 到节点 $b$ 路径上的颜色段数量(连续相同颜色被认为是同一段)。

112221由 $3$ 段组成:112221

请你写一个程序依次完成这 $m$ 个操作。

输入格式

第一行包含 $2$ 个整数 $n$ 和 $m$,分别表示节点数和操作数;

第二行包含 $n$ 个正整数表示 $n$ 个节点的初始颜色

下面 $n$ 行每行包含两个整数 $x$ 和 $y$,表示 $x$ 和 $y$ 之间有一条无向边。

下面 $m$ 行每行描述一个操作:

C a b c表示这是一个染色操作,把节点 $a$ 到节点 $b$ 路径上所有点(包括 $a$ 和 $b$)都染成颜色 $c$;

Q a b表示这是一个询问操作,询问节点 $a$ 到节点 $b$(包括 $a$ 和 $b$)路径上的颜色段数量。

输出

对于每个询问操作,输出一行答案。

样例

样例输入 1

6 5 2 2 1 2 1 1 1 2 1 3 2 4 2 5 2 6 Q 3 5 C 2 1 1 Q 3 5 C 5 1 2 Q 3 5

样例输出 1

3 1 2

提示

数 $N \le 10^5$,操作数 $M \le 10^5$,所有的颜色 $C$ 为整数且在 $[0, 10^9]$ 之间。