GTY's game II

Accepts: 2
Submissions: 9
Time Limit: 4000/2000 MS (Java/Others)
Memory Limit: 65536/65536 K (Java/Others)
问题描述
 GTY喜欢和ZZF玩游戏,但由于GTY每次都赢ZZF不愿意和他玩,这个游戏是这样的,ZZF在一张纸上画了一棵树,每个点上有一个数,ZZF会问GTY两点之间的数的和是多少,有时ZZF还会把一个路径上的点翻转过来询问,现在你代替GTY加入了这个游戏,你能答出来吗。
输入描述
只有一组数据,第一行包含2个整数$n,m (1 \leq n,m \leq 80000)$,表示点的数量和操作的数量,第二行$n$个数$a_i (1 \leq a_i \leq 1000)$,表示每个点的数值,接下来$n-1$行,每行两个数$u,v(1 \leq u,v \leq n)$,表示$u,v$之间有一条边,接下来$m$行,每行三个数$op,u,v(1 \leq u,v \leq n)$,若$op$为0表示询问路径$(u,v)$的和,若$op$为1,表示将路径$(u,v)$的权值翻转。
输出描述
对于个询问操作,输出答案。
输入样例
4 3
1 2 3 4
1 2
1 3
2 4
0 1 3
1 2 3
0 1 4
输出样例
4
8