#Lutece2750. 树上颜色段

树上颜色段

Migrated from Lutece 2750 树上颜色段

All parts of this problem, including description, images, samples, data and checker, might be broken. If you find bugs in this problem, please contact the admins.

Description

给定一棵有 nn 个节点的无根树和 mm 个操作。

对于这 mm 个操作,分为 22 种:

  • 操作 1: 将节点 aa 到节点 bb 路径上所有点都染成颜色 cc
  • 操作 2: 询问树上节点 aa 到节点 bb 简单路径上的颜色段数量(连续相同颜色被认为是同一段)

2332221233222144 段组成:22333322222211

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

Input

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

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

33 到第 (n+1)(n+1) 行,每行两个用空格隔开的整数 uu, vv,代表树上存在一条连结节点 uu 和节点vv 的边。

(n+2)(n+2) 到第 (n+m+1)(n+m+1) 行,每行描述一个操作,其格式为:

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

  • opopCC,则代表本次操作是一次染色操作,在一个空格后有三个用空格隔开的整数 aa, bb, cc,代表将 aabb 的路径上所有点都染成颜色 cc
  • opopQQ,则代表本次操作是一次查询操作,在一个空格后有两个用空格隔开的整数 aa, bb,表示查询 aabb 路径上的颜色段数量。

Output

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

Samples

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

Constraints

1n,m1051\le n,m \leq 10^5 0wi,c1090\le w_i, c \leq 10^9 1a,b,u,vn1\le a, b, u, v \leq n 数据保证给出的是树

Resources

2022 UESTC ICPC Training for Data Structures