#AG0408006. 树上点差分

树上点差分

题目描述

给定一棵大小为 nn 的树。树上节点编号从 11nn

初始时每个节点都有一个点权,第 ii 个节点初始的权值为 ai(1000ai1000)a_i(-1000 \le a_i \le 1000)

然后有 mm 次操作,每次操作给你三个整数 xi,yi,zix_i, y_i, z_i,你需要将以节点 xix_i 为起点,以节点 yiy_i 为终点的简单路径上所有点(包括节点 xix_iyiy_i)的点权加上 ziz_i1xi,yin,1000zi10001 \le x_i, y_i \le n, -1000 \le z_i \le 1000)。

mm 次操作结束后,请你输出树上每个节点的点权。

输入格式

第一行,一个整数 n(1n2×105)n(1 \le n \le 2 \times 10^5)

第二行,nn 个整数 a1,a2,,an(1000ai1000)a_1, a_2, \ldots, a_n(-1000 \le a_i \le 1000),表示每个节点初始的权值。

接下来 n1n-1 行,每行包含两个整数 uiu_iviv_i,表示树上一条边连接的两个节点编号(1ui,vin,uivi1 \le u_i, v_i \le n, u_i \neq v_i)。

接下来一行,包含一个整数 m(1m2×105)m(1 \le m \le 2 \times 10^5)

接下来 mm 行,每行包含三个整数 xi,yi,zix_i, y_i, z_i,表示一次操作(1xi,yin,1000zi10001 \le x_i, y_i \le n, -1000 \le z_i \le 1000)。

输出格式

输出共一行,包含 nn 个整数,两两之间以一个空格分隔。其中第 ii 个整数表示最终节点 ii 的权值。

样例

6
1 2 3 4 5 6
1 2
2 3
2 4
4 5
4 6
3
1 3 1
3 5 2
2 6 3
2 8 6 9 7 9

说明/提示

数据规模与约定

  • 对于 30%30\% 的数据,n,m20n,m \le 20
  • 对于 60%60\% 的数据,n,m2000n,m \le 2000
  • 对于 100%100\% 的数据,1n,m2×1051 \le n,m \le 2 \times 10^5