#ds902. 染色

染色

染色

题目来源

SDOI2011

题目描述

给定一棵 nn 个节点的无根树,共有 mm 个操作,操作分为两种:

  1. 将节点 aa 到节点 bb 的路径上的所有点(包括 aa 和 bb)都染成颜色 cc。
  2. 询问节点 aa 到节点 bb 的路径上的颜色段数量。

颜色段的定义是极长的连续相同颜色被认为是一段。例如 112221 由三段组成:11、222、1。

输入格式

输入的第一行是用空格隔开的两个整数,分别代表树的节点个数 nn 和操作个数 mm。

第二行有 nn 个用空格隔开的整数,第 ii 个整数 wiw_i 代表结点 ii 的初始颜色。

接下来 n−1n - 1 行,每行两个用空格隔开的整数 u,vu, v,代表树上存在一条连结节点 uu 和节点 vv 的边。

接下来mm行,每行描述一个操作,其格式为:

每行首先有一个字符 opop,代表本次操作的类型。

若 opop 为 C,则代表本次操作是一次染色操作,在一个空格后有三个用空格隔开的整数 a,b,ca, b, c,代表将 aa 到 bb 的路径上所有点都染成颜色 cc。

若 opop 为 Q,则代表本次操作是一次查询操作,在一个空格后有两个用空格隔开的整数 a,ba, b,表示查询 aa 到 bb 路径上的颜色段数量。

保证1≤n,m≤105,1≤wi,c≤1091\leq n,m \leq 10^5, 1\leq w_i, c\leq 10^9。

输出格式

对于每次查询操作,输出一行一个整数代表答案。

样例输入

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