#P2804. 动态树点修 & 路径求和(Dynamic Tree Vertex Add Path Sum)

动态树点修 & 路径求和(Dynamic Tree Vertex Add Path Sum)

动态树点修 & 路径求和(Dynamic Tree Vertex Add Path Sum)

问题描述

给定一棵含 N N 个顶点的树,初始时每条边为 (ui,vi) (u_i, v_i) ,顶点 i i 上的值为 ai a_i
处理 Q Q 个查询,类型如下:

  • 0 u v w x:删除边 (u,v) (u, v) ,并添加新边 (w,x) (w, x) (保证操作后仍为树)。
  • 1 p x:将顶点 p p 的值更新为 apap+x a_p \leftarrow a_p + x
  • 2 u v:输出从 u u v v 简单路径上所有顶点的值之和(含端点 u u v v )。

注:题目说明“the graph is always tree”,且对 type 0 查询,“there is an edge (u,v) (u, v) ”,即删除前该边存在。

约束条件

  • 1N,Q200000 1 \leq N, Q \leq 200\,000
  • 0ai,x109 0 \leq a_i, x \leq 10^9
  • 0p,u,v,w,x<N 0 \leq p, u, v, w, x < N
  • (ui,vi) (u_i, v_i) 构成一棵树
  • 对 type 0 查询,(u,v) (u, v) 是当前树中的一条边

输入

N QN\ Q
a0 a1  aN1a_0\ a_1\ \cdots\ a_{N-1}
u0 v0u_0\ v_0
u1 v1u_1\ v_1
:
uN2 vN2u_{N-2}\ v_{N-2}
Query₀
Query₁
:
QueryQ1_{Q-1}

5 7
1 10 100 1000 10000
0 1
1 2
2 3
1 4
2 0 3
1 1 100000
2 3 4
0 1 2 2 0
2 3 4
0 2 3 3 1
2 2 3
1111
111110
111111
101111