U142060 【模板】dfs序线段树

题目描述

一棵有n个结点的树,规定树根是1,树上每个点有个初始权w。在树上进行m次操作,每次操作指定一棵子树,把子树里面的每个点的权增加d,或者查询子树上每个点权之和。 请你对每一次查询,输出答案。

输入格式

第一行是两个整数n和m,表示树上有n个点,一共进行m次操作。 接下来是n-1行,每行两个整数u和v,表示树上u到v有一条边。 接下来一行是n个数,$a_i$,表示每个点初始的权。 接下来是m行,每行先是一个整数op表示操作类型。如果op是1,表示是修改操作,op后面跟两整数x和d,表示把以x为根的子树里面每个点权值加d。如果op是2,表示是查询操作,op后面跟一个整数x,表示查询以x为根的子树的内部每个点的权值之和。

输出格式

对于每个查询操作,输出查询的结果,每个结果一行。

说明/提示

数据范围: $1 \leq n,m \leq 2*10^5$ $1 \leq x \leq n$ $1 \leq a_i,d \leq 10^4$