A120041.神树
提高+/省选-
通过率:0%
时间限制:1.00s
内存限制:128MB
题目描述
Yasya 在森林中散步时,偶然发现了一棵有 n 个顶点的树。树是一种无环连通无向图。
在树旁边,女孩发现了一份古老的手稿,上面写有 m 个查询。查询分为两种类型。
第一种查询由整数 y 描述。树中每条边的权值都被替换为该边权值与整数 y 的按位异或。
第二种查询由顶点 v 和整数 x 描述。Yasya 选择一个顶点 u(1≤u≤n,u=v),并在树中从 v 到 u 心里画一条权值为 x 的双向边。
然后 Yasya 在所得图中找到一个简单环,并计算该环上所有边权的按位异或值。她希望选择一个顶点 u 使得计算得到的值最大。这个计算值就是该查询的答案。可以证明,在给定约束下,这样的环存在且唯一(与 u 的选择无关)。如果 v 和 u 之间已经存在边,则简单环为 v→u→v。
注意,第二种查询仅在心里进行,树本身不会发生任何改变。
请帮助 Yasya 回答所有查询。
输入格式
第一行包含一个整数 t(1≤t≤104),表示测试用例的数量。
每个测试用例的描述如下。
每个测试用例的第一行包含两个整数 n、m(2≤n≤2⋅105,1≤m≤2⋅105),分别表示树的顶点数和查询数。
接下来的 n−1 行,每行包含三个整数 v、u、w(1≤v,u≤n,1≤w≤109),表示树中的一条边及其权值。
保证给定的边集构成一棵树。
接下来的 m 行,每行描述一个查询:
- ^ y(1≤y≤109):表示第一种类型的查询;
- ? v x(1≤v≤n,1≤x≤109):表示第二种类型的查询。
保证所有测试用例中 n 的总和不超过 2⋅105,m 的总和也不超过 2⋅105。
输出格式
对于每个测试用例,输出所有第二种类型查询的答案。
输入输出样例
输入#1
2 3 7 1 2 1 3 1 8 ^ 5 ? 2 9 ^ 1 ? 1 10 ^ 6 ? 3 1 ? 2 9 5 6 1 2 777 3 2 2812 4 1 16 5 3 1000000000 ^ 4 ? 3 123 ? 5 1000000000 ^ 1000000000 ? 1 908070 ? 2 1
输出#1
13 15 11 10 1000000127 2812 999756331 999999756
输入#2
3 8 4 8 6 3 6 3 4 2 5 4 7 6 2 7 1 10 4 1 4 5 1 2 ^ 4 ^ 7 ? 7 8 ? 4 10 5 6 3 1 4 2 3 9 4 3 6 5 2 10 ? 5 7 ^ 1 ^ 8 ? 4 10 ? 1 9 ? 3 6 4 2 2 1 4 4 3 5 2 3 4 ^ 13 ? 1 10
输出#2
14 13 13 8 11 11 10