#P2972. 动态树子树加子树求和(Dynamic Tree Subtree Add Subtree Sum)
动态树子树加子树求和(Dynamic Tree Subtree Add Subtree Sum)

动态树子树加子树求和(Dynamic Tree Subtree Add Subtree Sum)
问题描述
给定一棵含 个顶点的树,顶点编号 到 ,每条边为 ,每个顶点 初始值为 。
处理 个查询,类型如下:
0 u v w x:删除边 ,并添加新边 (保证操作后仍为树)。1 v p x:将边 视为父边(即 是 的父节点),对以 为根的子树中所有顶点的值加上 。2 v p:将边 视为父边(即 是 的父节点),输出以 为根的子树中所有顶点的值之和。
注意:对类型 1 和 2 查询, 必须是当前树中的一条边;子树定义基于将该边定向为 后, 所在的连通分支(即以 为根、远离 的部分)。
约束条件
- 图始终为树;对类型 0 查询, 存在;对类型 1/2 查询, 存在。
输入
:
Query₀
Query₁
:
Query
5 7
1 10 100 1000 10000
0 1
1 2
2 3
1 4
2 1 0
1 1 4 100000
2 2 3
0 1 2 2 0
2 0 2
0 2 3 3 1
2 1 4
11110
310111
210011
401111