C. 最短路
题目描述
小W有一棵 n 个点的带权树,现在他想从 S 走到 T。定义一条路径的长度为上面所有边的长度的异或和(如果不知道异或是什么可以戳 Wikipedia,异或和就是所有数异或的和)。
但是他觉得直接沿着树上的边走太慢了,于是他决定新建一些边。他有 m 个修建计划,第 i 个是在 u 和 v 之间修建一条长为 w 的边。
现在他有一些询问,每个询问形如 S,T,l,r,表示如果动用 [l,r] 区间内的所有修建计划,他从 S 走到 T 的最短路长度应该是多少。
输入格式
第一行三个整数 n,m,q。
接下来 n−1 行,每行三个整数 u,v,w,表示原本树上有一条 u 和 v 之间有一条长度为 w 的边。
接下来 m 行,第 i 行有三个整数 u,v,w,表示一个修建计划。
接下来 q 行,每行四个整数 S,T,l,r,表示一组询问。
输出格式
输出共 q 行,表示每组询问的答案。
样例1
input
4 4 3
1 2 1
2 3 2
3 4 3
1 2 2
2 3 3
3 4 1
1 3 1
1 4 1 1
1 2 1 3
3 4 3 3
output
0
0
1
限制与约定
对于 20% 的数据,n,m,q≤1000。
对于 50\% 的数据,n, m, q \le 5 * 10^4。
对于 100\% 的数据,1 \le n, m, q \le 3 * 10^5, 1 \le w \le 10^9。
时间限制:3s
空间限制:512MB
提示
输入输出量可能很大,请使用较快的I/O方式。