摘要:
poj 1741 http://poj.org/problem?id=1741题意:求树上距离小于k的点对的对数;分析:每条路经要么过根,要么不过根,对于不过根的路径我们递归同理可以求出,对于过根的路径,我们dfs一遍记录下所有其他节点到跟的距离,然后sort()一下可以o(n)求出其小于k的pair,但我们要减去其中来自同一子树的pair;利用重心分治,最多logn次,所有时间o(n * logn * logn);重心的定义:去掉该点后,其子树节点个数的最大值最小;step1:对于当前树,找到其重心,统计pair;step2:把重心当根,分别递归其子树;findsz(),findC()为求重 阅读全文