Tree

Accepts: 4
Submissions: 12
Time Limit: 4000/2000 MS (Java/Others)
Memory Limit: 131072/131072 K (Java/Others)
问题描述
一棵树有N个节点,编号为1到N,每条边都有边权。定义f(u,v)为从u到v路径上所有边权的异或和。给定一个数M,有Q次查询,每次给定一个区间[l,r],询问有多少对(u,v)满足f(u,v)>M ($l\leq u < v \leq r$).
输入描述
输入有多组数据。
每组数据第一行包含3个整数N,M和Q.$(1\leq N , M , Q\leq 50000)$
接下来N-1行,每行3个整数a,b和c,表示节点a和b连接着一条边权为c的边.$(1\leq a, b\leq N,0\leq c\leq 50000)$
接下来Q行,每行两个数字l,r,表示查询区间.$(1\leq l\leq r\leq N)$
输出描述
对于每次查询输出一行答案.
输入样例
5 10 3
1 2 13
2 3 15
2 4 17
2 5 8
1 5
2 4
3 3
输出样例
6
3
0