#P3401. 洛谷树

    ID: 2337 远端评测题 1000ms 125MiB 尝试: 0 已通过: 0 难度: 6 上传者: 标签>线段树洛谷原创树链剖分树剖洛谷月赛

洛谷树

题目背景

萌哒的 Created_equal 小仓鼠种了一棵洛谷树!

(题目背景是辣鸡小仓鼠乱写的 QAQ)。

题目描述

树是一个无环、联通的无向图,由 nn 个点和 n1n-1 条边构成。树上两个点之间的路径被定义为他们之间的唯一一条简单路径——显然这是一条最短路径。

现在引入一个概念——子路径。假设树上两个点 p1p_1pnp_n 之间的路径是 P=p1,p2,p3,,pnP = \langle p_1,p_2,p_3, \ldots, p_n \rangle ,那么它的子路径被定义为某一条路径 PP',满足 $P'= \langle p_i,p_{i+1},p_{i+2},\ldots,p_j \rangle $,其中 1ijn1\le i \le j \le n。显然,原路径是一条子路径,任意一个点也可以作为子路径。

我们给每条边赋予一个边权。萌萌哒的 Sugar 问小仓鼠:对于任意两个点 uuvv,你能快速求出,uuvv 的路径上所有子路径经过的边的边权的 xor\text{xor} 值的和是多少。具体地说就是,你把 uuvv 的路径上所有子路径全部提出来,然后分别把每个子路径上经过的边的边权 xor\text{xor} 在一起,最后求出得到的所有 xor\text{xor} 值的和。

什么?你不知道 xor\text{xor}?那就去百度啊!

这时候,fjzzq2002 大爷冒了粗来:窝还要你滋磁修改某条边边权的操作!

小仓鼠那么辣鸡,当然不会做这道题啦。于是他就来向你求救!

输入格式

第一行两个正整数 nnqq,表示点的个数,查询和询问的总次数。

接下来 n1n-1 行,每行两个正整数 u,vu,v 和一个非负整数 ww,表示 uuvv 两个点之间有一条边权为 ww 的边。

接下来 qq 行,格式为 1 u v2 u v w
如果为 1 u v 操作,你需要输出 uuvv 的路径上所有子路径经过的边的边权的 xor\text{xor} 值的和是多少。
如果为 2 u v w 操作,你需要把 uuvv 这条边的边权改为 ww,保证这条边存在。

输出格式

对于每个 11 操作,输出答案。

5 3
1 2 3
2 3 3
2 4 6
4 5 1
1 3 4
2 2 4 7
1 3 5
14
26

提示

测试点编号 n=n= q=q= 备注
11 100100 55
22 2020
33 100100
44 5×1035\times 10^3 10310^3
55 2×1032\times 10^3
66 3×1033\times 10^3
77 10410^4 10410^4 ii 条边连接第 ii 个点和第 i+1i+1 个点,且没有 22 操作
88 2×1042\times 10^4
99 10410^4 ii 条边连接第 ii 个点和第 i+1i+1 个点
1010 2×1042\times 10^4
1111 10410^4 没有 22 操作
1212 2×1042\times 10^4
1313 2×1042\times 10^4
1414 3×1043\times 10^4 3×1043\times 10^4
1515 10410^4
1616 2×1042\times 10^4 2×1042\times 10^4
1717
1818 3×1043\times 10^4
1919 2×1042\times 10^4 3×1043\times 10^4
2020 3×1043\times 10^4

对于 100%100\% 的数据,所有边权小于等于 10231023