(F. MST Unification)最小生成树

题目链接:http://codeforces.com/contest/1108/problem/F

题目大意:给你n个点和m条边,然后让你进行一些操作使得这个图的最小生成树唯一,每次的操作是给某一条边加1,然后让你求出最小的操作数。

具体思路: 最小生成树不唯一的话,指的是至少有两条边权相等的边,这两条边中的任意一条都能构成一个最小生成树的边。那么如何避免这种局面出现?

如果两个边权相等的边在最小生成树上(可以互相替换),也就是说这两条边最这个最小生成树上的作用是可以相互替代的,那么我们在加边的时候首先考虑处理边权相等的边,这里处理的边还应该再筛选一下,我们需要处理的那些边是指的相互替代的边(如果不能相互替代,就说明这条边在最小生成树上是其他边不能替代的)。

具体过程就是先把所有边按照边权进行排序,然后再去处理矛盾的边就可以了。

AC代码:

 https://paste.ubuntu.com/p/Z4KPSZfD2t/

猜你喜欢

转载自www.cnblogs.com/letlifestop/p/10320959.html