CRB has a tree, whose vertices are labeled by 1, 2, …,
N. They are connected by
N – 1 edges. Each edge has a weight.
For any two vertices
u and
v(possibly equal),
f(u,v) is xor(exclusive-or) sum of weights of all edges on the path from
u to
v.
CRB’s task is for given
s, to calculate the number of unordered pairs
(u,v) such that
f(u,v) = s. Can you help him?
Input
There are multiple test cases. The first line of input contains an integer
T, indicating the number of test cases. For each test case:
The first line contains an integer
N denoting the number of vertices.
Each of the next
N - 1 lines contains three space separated integers
a,
b and
c denoting an edge between
a and
b, whose weight is
c.
The next line contains an integer
Q denoting the number of queries.
Each of the next
Q lines contains a single integer
s.
1 ≤
T ≤ 25
1 ≤
N ≤
105
1 ≤
Q ≤ 10
1 ≤
a,
b ≤
N
0 ≤
c,
s ≤
105
It is guaranteed that given edges form a tree.
Output
For each query, output one line containing the answer.
Sample Input
Sample Output
题意:
f(u,v) = s(从u->v的异或)中u,v可以有多少对
所以f(u,v) = f(1 , u) ^ f(1 , v)
#include
#include
#include
#include
#include
#include
#include