此题主要考查树的构建与异或运算的基本性质,将树构建完毕后,可以去求出从根节点到每一个节点中所有边权的异或,假设根节点是t,当前要查询的点为u,那么对于点x,它到点u的边权异或等于它到t点的所有边权异或与u点到t的所有边权异或的异或,然后根据异或运算的性质,点u到t点的边权异或与k值的异或即为任意点x到根节点的异或,此时,两点之间的边权异或值即为k
#include<iostream>
#include<cstring>
#include<algorithm>
在一座数据中心,服务器通过光缆互相连接。整个网络包含 n 台服务器和 n−1 条光缆,保证网络连通且不存在环(即任意两台服务器之间有且仅有一条简单路径)。每条光缆都有一个固定的密钥,用一个非负整数表示。
对于任意两台服务器 u 和 v,它们之间通信所使用的「路径密钥」定义为:从 u 到 v 的唯一简单路径上,所有光缆密钥的按位异或结果(用 ⊕ 表示异或运算)。特别地,当 u=v 时,路径密钥为 0。
现在管理员会进行 q 次查询,每次查询给定服务器 u 和一个密钥值 k,请你计算有多少台服务器 v,使得 u 到 v 的路径密钥恰好等于 k。
约束:
By signing up a CodeFun2000 universal account, you can submit code and join discussions in all online judging services provided by us.