#P1062. 数树(tree)

数树(tree)

题目描述

本题为一道挑战题

所谓数树,就是让你看看无根树上的边上的数了!

当然,由于出题人很喜欢异或,数树的内容当然是求它们的异或值了。

我们定义两个点 x,yx,y 的异或距离 dis(x,y)dis(x,y) 为它们之间所隔边权的异或和。

定义 valx,y(p)=dis(x,p)dis(y,p)val_{x,y}(p)=dis(x,p)\oplus dis(y,p)

当然,这样这题还有点简单,所以我们要求你对给定的 (x,y,l,r)(x,y,l,r),求:

$$\displaystyle \bigoplus_{i = l}^{r} \operatorname{val}_{x, y}(i)$$

输入格式

从文件 tree.in 中读入数据。

第一行一个正整数 nn,表示树上节点的个数。

接下来 n1n-1 行,描述树的结构,每行三个正整数 u,v,wu,v,w,分别表示无向边的两个端点编号和边权。

接下来一行一个正整数 qq,表示询问个数。

接下来 qq 行,每行四个正整数 (x,y,l,r)(x,y,l,r),表示询问。

输出格式

输出到文件 tree.out 中。

输出 qq 行,对每组询问,输出一个非负整数,表示答案。

样例

2
1 2 1
1
1 1 1 1
0

数据范围

100%100\% 的数据,1n,q1051\le n,q\le 10^51u,vn1\le u,v\le n1w1091\le w\le 10^9,输入的是一棵树,1x,y,l,rn1\le x,y,l,r\le nlrl\le r

本题采用子任务捆绑测试。

子任务 qq 特殊性质 分数
#1 10\le 10 - 1414
#2 - n10n\le 10 88
#3 树是一条链
#4 树是一个菊花
#5 10000\le 10000 q10000q\le 10000 1212
#6 - 5050

对于标 - 的部分,即为“无特殊限制”。