问题 G: 树上改色

问题 G: 树上改色

时间限制: 1 Sec  内存限制: 128 MB
提交: 20  解决: 3
[提交] [状态] [讨论版] [命题人:]

题目描述

小明最近对树这个知识点很感兴趣,对于一棵n个节点的树,最初有结点都有颜色,小明想改变某些路径上的颜色,有时还要统计某路径上
颜色段的种类,比如"2231"就是3种颜色段,共进行了q条操作,操作分成2类
将路径a到b的各个节点染色成d;
统计路径a到b的颜色段数。

输入

第一行包含2个正整数nq,分别表示结点数和操作数;

第二行包含n个正整数,为n个结点的初始颜色

下面 n-1行每行包含两个整数u和v,表示u和v之间有一条无向边。

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

“B a b d”表示这是修改树上节点颜色操作,把路径ab所有点(包括ab)都染成颜色d

“Q a b”表示这是查询操作,询问节点a到节点b(包括ab)路径上的颜色段数。


输出

回答每条统计染色段数的询问,各占一行

样例输入

6 5
2 2 1 2 1 1
1 2
1 3
2 4
2 5
2 6
Q 3 5
B 2 1 1
Q 3 5
B 5 1 2
Q 3 5

样例输出

3
1
2

提示

节点数n<=10^5,操作数q<=10^5,所有的颜色d为整数且在[0, 10^9]之间。
这题是树链剖分,不要直接复制代码修改,很难成功,因为这个不是版题,请先把代码搞懂,自己根据题意写出来,这样比修改代码要节省时间,也容易拿到分

[提交][状态]