Possible Tree
题意
给你一棵树,q个询问,问的是x->y路径上的异或和为val , 问你最多有几个询问是真的?
带权并查集。由于异或的特点,假设某个点为根,比如0,那么比如2->5的异或值,就是2->1的异或值和5->1的异或值异或一下。所以我们用yihuo[i]来表示i到源点的异或和。如果两个数的源点已经一样,那么判断一下val==yihuo[i]^yihuo[j]即可,若是不一样,就把他们union,同时yihuo[rootp]=yihuo[p]^yihuo[q]^val。
看!代码
1 |
|