【线段树】HDU 5039 Hilarity

通道:http://acm.hdu.edu.cn/showproblem.php?pid=5039

题意:n点n-1条边组成的一棵树,问其中有多少条路径(u,v)路径亦或和为1

思路:首先要明白一个结论,u->v的值始终与1->u xor 1->v相等。有了这个性质之后,直接选一个点为根,dfs遍历整颗树,就可以求出根节点到其他所有节点路径上的异或和了。然后题目所要求的方案数相当与从所有为0的路径中和所有为1的路径中选一条的总种类数,还要乘2。对于修改,我们要dfs遍历树的时候,记录一个访问时间戳即可。

代码:https://github.com/Mithril0rd/Rojo/blob/master/hdu5039.cpp

posted @ 2014-10-31 16:08  mithrilhan  阅读(177)  评论(0编辑  收藏  举报