克鲁斯卡尔
又是被吊打的一天.......
之前写过一遍最小生成树的,找不到了,再来一遍
用最简单的话讲,克鲁斯卡尔就是并查集+sort 排序
在一个图里有很多的边连接很多个点,把这些边按照边权排个序
最小生成树的是从小到大排序
最大生成树(如果可以这么叫的话)是从大到小排序
咱就以最小生成树为例子讲:
选出当前最值的一条边$e_i$,$e_i$连接两个点$u,v$
现在我们就来判断:
A. 如果$u,v$都在集合$T_i$中,那就说明这两个点已经在一起了,不可以再取边重新连接它俩(如果再连接的话就变成环了)
B. 如果它俩不同在同一个集合,那就取这条边
就一直取边,期间用一个$cnt$记录一下加了多少条边,一直加边加到$cnt = n-1$
题目
洛谷P2121 拆地毯:一道最“大”生成树