P0697

[SDOI2011]染色

[SDOI2011]染色

给定一棵有 nn 个节点的无根树和 mm 个操作,操作有以下 22 类:

  1. 将节点 aa 到节点 bb 的路径上所有节点都染成颜色 cc。
  2. 询问节点 aa 到节点 bb 的路径上有多少个颜色段,其中连续的相同颜色被视为同一个颜色段。

例如,颜色序列 112221112221 由 33 段组成,分别为 1111、222222 和 11。

请你编写程序,依次完成这 mm 个操作。

输入格式

第一行包含两个整数 nn 和 mm,分别表示节点数和操作数。

第二行包含 nn 个正整数,表示 nn 个节点的初始颜色。

接下来 n−1n-1 行,每行包含两个整数 xx 和 yy,表示节点 xx 和节点 yy 之间有一条无向边。

接下来 mm 行,每行描述一个操作:

  • C a b c 表示染色操作,将节点 aa 到节点 bb 的路径上所有节点,包括 aa 和 bb,都染成颜色 cc。
  • Q a b 表示询问操作,询问节点 aa 到节点 bb 的路径上,包括 aa 和 bb,共有多少个颜色段。

输出格式

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

样例输入

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

数据范围

  • n≤105n\le10^5;
  • m≤105m\le10^5;
  • 所有颜色 cc 均为整数,且满足 0≤c≤1090\le c\le10^9。

来源与许可

本题为 SDOI 2011 试题「染色」,题面与测试数据整理自 BZOJ 2243。

样例 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

输出

3
1
2