6641 - 染色

通过次数

0

提交次数

0

时间限制 : 1 秒
内存限制 : 128 MB

给定一颗有n个结点的无根树和m个操作,操作有2类:

(1)将结点a到结点b路径上所有点都染上颜色。

(2)询问结点a到结点b路径上的颜色段数量(连续相同颜色被认为是同一段),如“112221”由3段组成:“11”、“222”和“1”。

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

输入

第一行包含2个整数n和m,分别表示结点数的操作数。

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

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

下面若干行,每行描述一个操作:

“C a b c”表示这是一个染色操作,把结点a到结点b路径上所有点(包括a和b)都染上颜色。

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

输出

对于每个询问操作,输出一行结果。

 

样例

输入

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

输出

3
1
2

来源

一本通提高