问题 J: 返航

内存限制:128 MB 时间限制:1 S
题面:传统 评测方式:文本比较 上传者:
提交:2 通过:1

题目描述

染染船长,返航!

修完船后,染染船长在规划返航路线,现在有一张地图摆在他的面前。

经过观察,染染发现地图上的路线呈现为一棵基环树的结构,也就是一张 nn 个点 nn 条边的简单(无重边无自环)连通无向图的形式。在基环树上的每个点代表一个贸易点,可以通过交易获得利润,点 ii 收获的利润为 aiai

染染会选择一条从起点到终点的简单路径(不能重复经过点或边)用于返航,并且在返航过程中,染染会选择其中的连续一段进行交易,获得的总利润即这一段的利润和。形式化的,假设染染选择的路径依次经过点 x1,x2,⋯,xkx1,x2,,xk,之后染染会选择连续的一段 xl,xl+1,⋯,xrxl,xl+1,,xr,最终的总利润即 axl+axl+1+⋯+axraxl+axl+1++axr。染染当然希望最大化总利润,甚至交易利润为负时,染染也可以选择不进行交易。

然而,地图是模糊的,染染不能确定起点和终点,所以染染会多次询问如果起点和终点分别为 s,ts,t 时可以获得的最大利润。

除此之外,由于各个贸易点有自己的情况,所以某个贸易点 xx 的利润 axax 随时可能修改。

输入格式

本题单个测试点内包含多组测试数据。

输入第一行一个正整数 T (1≤T≤20)T (1T20),表示数据组数。

每组数据第一行两个正整数 n,q (1≤n,q≤105,n≥3)n,q (1n,q105,n3),分别表示基环树的点数和操作数量。

第二行 nn 个整数 a1,a2,⋯,an (−109≤ai≤109)a1,a2,,an (109ai109),表示每个贸易点的利润。

接下来 nn 行,每行两个正整数 x,y (1≤x,y≤n)x,y (1x,yn) 表示基环树上的一条边。保证所有边构成基环树结构。

接下来 qq 行,每行开头一个英文大写字母 QQ 或 CC

如果开头为 QQ,则表示一个询问,接下来跟两个正整数 s,t (1≤s,t≤n)s,t (1s,tn),表示询问从起点 ss 到终点 tt 可以获得的最大总利润。

如果开头为 CC,则表示一个修改,接下来跟两个整数 x,v (1≤x≤n,−109≤v≤109)x,v (1xn,109v109),表示修改贸易点 xx 的利润 axax 为 vv

保证单个测试点内每组数据中 nn 的和与 qq 的和均不超过 106106

输出格式

为了避免输出量过大,输出对每组数据进行压缩。

对于每组数据,假设总共有 kk 次询问,第 ii 次询问的答案为 riri,你只需要输出一行一个压缩后的非负整数 RRR=⨁i=1kriR=i=1kri

其中  为按位异或运算,压缩结果即所有询问答案的异或和。

输入样例 复制

1
10 5
1 2 -3 4 5 -1 -3 2 4 -7
2 4
3 5
4 3
2 5
1 3
1 6
1 7
8 5
2 9
4 10
Q 1 7
Q 6 9
C 5 -3
Q 6 9
Q 4 5

输出样例 复制

6

数据范围与提示

第一次询问可以选择贸易点 11,利润为 1=11=1

第二次询问可以选择贸易点 5,2,95,2,9,利润为 5+2+4=115+2+4=11

第三次修改贸易点 55 的利润为 −33

第四次询问可以选择贸易点 4,2,94,2,9,利润为 4+2+4=104+2+4=10

第五次询问可以选择贸易点 4,24,2,利润为 4+2=64+2=6