#CSES1138. 路径查询 I

路径查询 I

题目背景

翻译自 CSES-1138 题。

题目描述

给定一个包含 nn 个节点的树,其中节点 11 是根节点。每个节点都有一个值。

你的任务是处理以下两种类型的查询:

  1. 将节点 ss 的值修改为 xx
  2. 计算从根节点到节点 ss 的路径上的所有节点值的总和。

输入格式

第一行包含两个整数 nnqq:分别表示树中的节点数量和查询数量。节点编号为 1,2,,n1,2,…,n,根节点是节点 11

第二行包含 nn 个整数 v1,v2,,vnv_1,v_2,…,v_n:每个节点的初始值。

接下来有 n1n−1 行,每行包含两个整数 aabb:表示节点 aa 和节点 bb 之间有一条边。

最后有 qq 行查询。每行查询的格式可以是:

  • 1 s x:表示将节点 ss 的值修改为 xx
  • 2 s:表示查询从根节点到节点 ss 的路径上所有节点值的总和。

输出格式

对于每个查询类型 2,输出从根节点到节点 ss 的路径上所有节点值的总和。

样例

5 3
4 2 5 2 1
1 2
1 3
3 4
3 5
2 4
1 3 2
2 4
11
8

说明/提示

1n,q21051 \leq n,q \leq 2 \cdot 10^5

1a,b,sn1 \leq a,b,s \leq n

1vi,x1091 \leq v_i , x\leq 10^9