tree

Accepts: 0
Submissions: 6
Time Limit: 8000/4000 MS (Java/Others)
Memory Limit: 65536/65536 K (Java/Others)
问题描述
给定一棵带边权和点权的树,对于任意点对$(i, j) (i < j)$,对答案的贡献为$(a_i \ xor \ a_j)*dis(i,j), dis(i,j)$为$i$到$j$在树上的距离。
总共有$T$个时刻。
每个时刻会修改某个点的点权。
你需要输出所有时刻的答案。
输入描述
若干组数据(大概$5$组)。
每组数据第一行一个整数$n(1 \leq n \leq 30000)$, 表示树的节点个数。
接下来一行$n$个数,表示$a_i(0 \leq a_i < 16384)$。
接下来$n-1$行,每行三个数$A_i, B_i, C_i(0 \leq C_i \leq 100)$, 表示存在一条长度为$C_i$的边连接$A_i, B_i$这两个节点。
接下来一行一个数$T(1 \leq T \leq 30000)$。
接下来$T$行每行两个数$D_i(1 \leq D_i \leq n), E_i(0 \leq Ei < 16384)$,表示把第$a(D_i)$修改为$E_i$。
输出描述
对于每组数据的每个时刻,输出一行表示答案。
输入样例
5
1 2 3 4 5
1 2 3
1 3 4
2 4 5
2 5 5
5
1 2
2 4
3 2
4 1
5 5
输出样例
346
346
335
330
330