一、两个基本算法的适用情况
kruskal算法比较常用,适合稀疏图(大多数题目的图都是稀疏图),其复杂度主要与边数m有关。而prim比较适合稠密图,因此常用邻接矩阵存图,复杂度主要与点数n有关。
最短网络
https://www.acwing.com/problem/content/1142/
模板题,用两种算法都可以。
二、kruskal算法的特性
1.繁忙的都市
https://www.acwing.com/problem/content/1144/
生成的最小生成树的最大的边权值最小。
2.联络员
https://www.acwing.com/problem/content/description/1145/
可以从中间开始建立最小生成树,而prim就必须从头开始。
三、先立后破
连接格点
https://www.acwing.com/problem/content/description/1146/
有些题,是需要我们从头开始构建一个最小生成树。这时可以先建一个完全图(或者把合法的边全部建出来)。然后再用最小生成树算法选出最小生成树对应的边。
四、逆向思考,正难则反
兽径管理
https://www.luogu.com.cn/problem/P1340
对于动态加边,每次都要求最小生成树的,可以不用每次都重新跑一遍最小kruskal.只需要从最后的一个最小生成树往前推,只要新加的边不在树上,就不用重跑。
五、超级源点
新的开始
https://www.acwing.com/problem/content/1148/