传送门
换根
d
p
dp
dp傻逼题好像不好码啊。
考虑直接把每一个二进制位拆开处理。
先
d
f
s
dfs
dfs出每个点到1的异或距离。
然后分类讨论一波:
- 如果一个点如果当前二进制位到根节点异或距离为1,那么对于当前二进制位到这个点距离为 0 0 0的就是到根节点距离为 1 1 1的,如果当前二进制位到这个点距离为 1 1 1的就是到根节点距离为 0 0 0的。
- 如果一个点如果当前二进制位到根节点异或距离为1,那么对于当前二进制位到这个点距离为 0 0 0的就是到根节点距离为 0 0 0的,如果当前二进制位到这个点距离为 1 1 1的就是到根节点距离为 1 1 1的。
然后就统计完了。
代码