#P6208. 树上询问

树上询问

题目描述

有一棵 nn 节点的树,根为 11 号节点。每个节点有两个权值 ki,tik_i, t_i,初始值均为 00。

给出三种操作:

  1. Add(x,d)\mathrm{Add}( x , d ) 操作:将 xx 到根的路径上所有点的 ki←ki+dk_i\leftarrow k_i + d
  2. Mul(x,d)\mathrm{Mul}( x , d ) 操作:将 xx 到根的路径上所有点的 ti←ti+d×kit_i\leftarrow t_i + d \times k_i
  3. Query(x)\mathrm{Query}( x ) 操作:询问点 xx 的权值 txt_x

输入格式

第一行一个整数 n n 。
之后的 n−1 n-1 行,每行两个整数 u,vu, v,表示 uu 与 vv 间有一条无向边。
第 n+1n+1 行一个整数 mm 表示操作个数。
之后的 mm 行,第一个数表示操作类型 opt\mathrm{opt};
若 opt\mathrm{opt} 为 11 或 22,则接下来有两个数 x,dx, d;
若 opt\mathrm{opt} 为 33,则只有一个数 xx。

输出格式

对于每一个询问,输出一行表示询问点的 tit_i 值。

3
1 2
1 3
5
1 1 2
1 2 1
2 3 10
2 2 5
3 1

45

数据范围与提示

1≤n,m≤100000,−10≤d≤10 1 \leq n, m \leq 100000, -10 \leq d \leq 10 。
已经按照 LOJ 的运行速度调整时限。