[CodeFestival 2017J]MST
MST
题解
首先我们知道,如果我们将原本的的边集分成两部分,对其分别求最小生成树(即使建不出完整的树也没关系),再将这两部分中是最小生成树的边集合在一起,求最小生成树,我们求出来的最小生成树一定是原边集的最小生成树。
这东西通过Kruskal的方法是很容易证明的,毕竟原边集最小生成树的边肯定都会选进边集子集的最小生成树。
原题目的两点间加边的代价为 v a l u + v a l v + d i s t (
首先我们知道,如果我们将原本的的边集分成两部分,对其分别求最小生成树(即使建不出完整的树也没关系),再将这两部分中是最小生成树的边集合在一起,求最小生成树,我们求出来的最小生成树一定是原边集的最小生成树。
这东西通过Kruskal的方法是很容易证明的,毕竟原边集最小生成树的边肯定都会选进边集子集的最小生成树。
原题目的两点间加边的代价为 v a l u + v a l v + d i s t (