luogu#P5127. 子异和
子异和
题目描述
小L和小K正在激烈地讨论着。
(你不用知道谁说的哪句话……)
“你知道非空子集吗?”
“当然知道啊!比如说集合,它的所有非空子集就是$\{1\},\{2\},\{3\},\{1,2\},\{2,3\},\{1,3\},\{1,2,3\}$。”
“那你知道每个非空子集里的数的亦或和是多少吗?”
“也知道啊,不就是吗。”
“那你知道它们的和是多少吗?我们把它叫做子异和。”
“子异和……这个名字好奇怪啊,不过我知道,是。”
“那我问你,的子异和是多少?”
“慢慢暴力算呗!”
“如果呢?”
“……”
“如果把问题放在一颗树上呢?”
“……那你会不会做啊?”
“当然……不会做……”
现在,只有你能帮助小L和小K了,请你帮忙解决这个问题。
为了更清晰的表达题意,我们再做一次解释。
有一个个节点的树,总共有次操作。这些操作按照操作顺序输入。每次操作可能是询问或修改。
每次询问操作会给出两个节点编号。根据常识,在树上有唯一路径。我们设这条路径经过的所有点的点权集合为。你要输出的子异和。答案。
每次修改操作会给出两个节点编号与一个整数值。你要将节点到节点的唯一路径上的所有点的点权分别异或。
这里的集合指可重集合
输入格式
第一行三个正整数。
接下来行,每行两个正整数,表示节点和之间有一条边。不会出现重边与自环。
接下来一行个非负整数,第个非负整数表示节点的初始点权。
接下来行,每行若干个整数,表示个操作的信息。每行第一个整数只可能是或。如果是,则此操作为询问,接下来两个数为;如果是,则此操作为修改,接下来三个数为。
输出格式
对于每一个询问,输出一行表示答案。
3 4
1 2
1 3
1 1 1
1 1 1
2 1 3 1
2 3 3 1
1 1 3
1
2
提示
样例解释:
第一次询问,到的路径经过号节点,点权组成的集合为,子异和为。
两次修改后,号点点权为,号点点权为。
第二次询问,到的路径经过的点权集合为,子异和为。
本题共有个测试点,每个测试点分,总分为分。
| 测试点编号 | 的范围 | 的范围 |特殊性质 | | :----------: | :----------: | :----------: | :----------: | :----------: | | | | | 无 | | | | | 每条边连接的两个节点编号均相邻 | | | | | 无 |
对于的数据:
输入的数均为不大于的非负整数,。