51NOD1681 公共祖先 【dfs序+树状数组】
传送门 首先求一遍树1的dfs序,线段树维护数组c[i]
dfs遍历树2
当进入u点时
①: subNum=∑out[u]i=in[u]c[i]① :\ subNum=\sum_{i=in[u]}^{out[u]}c[i]
②: c[in[u]]+=1②:\ c[in[u]]+=1
③: 遍历u的所有孩子③:\ 遍历u的所有孩子
④: 以u为树根的2个子树包含的公共点数=∑out[u]i
原创
2017-09-14 16:58:15 ·
298 阅读 ·
0 评论