题目传送门:https://codeforces.com/problemset/problem/766/E
题目大意:
给定一棵节点数为\(n\)的树,求树上任意两点之间异或路径值之和,记 \(x,y\) 之间的最短路经过点\(p_1,p_2,...,p_k\),其中\(p_1=x,p_k=y\),则异或路径值\(V=p_1\otimes p_2\otimes...\otimes p_k\)
经典的Tree DP吧
记\(F[x][K][0/1]\)表示所有从\(x\)出发的路径中,第\(K\)位为\(0/1\)的情况总数
之后我们再进行二次换根,对所有节点做根的情况都进行统计即可
/*program from Wolfycz*/
#include