AT_cf17_final_j Tree MST
题意 : 给定一棵
建立一张完全图
求完全图的最小生成树边权和。
算法一
结论:欲求边集
的最大权值生成森林,可以先将 划分为两部分 ,分别求出两者的最大权值生成森林, ,再求 的最大生成森林即可。 用 Kruskal(拟阵的性质)容易证明。
点分治,每次考虑跨越重心的路径所生成的边集。
以分治中心为根,令
我们只需保留
这里会产生子树内自己连的路径,但是比直接连劣所以不会影响答案。
点分治一共会产生
算法二
完全图 MST,考虑使用 Boruvka 算法。
每一轮,我们要对每个连通块找到到达其他连通块的最小出边。
对于一个已经联通块染色的局面,我们可以在
对于点
以上计算了下方的共线,再次 dfs 计算从上面延伸过来的贡献即可。
每轮会使连通块个数减半,复杂度