name
This Problem Is Too Simple!
description
给您一颗树,每个节点有个初始值。
现在支持以下两种操作:
- C i x(0<=x<2^31) 表示将i节点的值改为x。
- Q i j x(0<=x<2^31) 表示询问i节点到j节点的路径上有多少个值为x的节点。
input
第一行有两个整数N,Q(1 ≤N≤ 100,000;1 ≤Q≤ 200,000),分别表示节点个数和操作个数。
下面一行N个整数,表示初始时每个节点的初始值。
接下来N-1行,每行两个整数x,y,表示x节点与y节点之间有边直接相连(描述一颗树)。
接下来Q行,每行表示一个操作,操作的描述已经在题目描述中给出。
output
对于每个Q输出单独一行表示所求的答案。
sample input
5 6
10 20 30 40 50
1 2
1 3
3 4
3 5
Q 2 3 40
C 1 40
Q 2 3 40
Q 4 5 30
C 3 10
Q 4 5 30
sample output
0
1
1
0
toturial
树剖后直接对每一个数值都维护一颗权制线段树,动态开点即可
code
1 |
|
- 本文作者: fightinggg
- 本文链接: http://fightinggg.github.io/yilia/yilia/PW4J7G.html
- 版权声明: 本博客所有文章除特别声明外,均采用 MIT 许可协议。转载请注明出处!