一、核心思想
将输入的数据由小到大进行排序,再使用并查集算法(传送门)将每个点连接起来,同时求和。
个人认为这个算法比较偏向暴力,有些题可能会超时。
二、例题 洛谷—P3366
题目地址:https://www.luogu.org/problemnew/show/P3366
这是一道非常好的克鲁斯卡尔算法的模板题。
题目描述
如题,给出一个无向图,求出最小生成树,如果该图不连通,则输出orz
输入输出格式
输入格式:
第一行包含两个整数N、M,表示该图共有N个结点和M条无向边。(N<=5000,M<=200000)
接下来M行每行包含三个整数Xi、Yi、Zi,表示有一条长度为Zi的无向边连接结点Xi、Yi
输出格式:
输出包含一个数,即最小生成树的各边的长度之和;如果该图不连通则输出orz
输入输出样例
输入样例:
4 5
1 2 2
1 3 2
1 4 3
2 3 4
3 4 3
输出样例:
7
AC代码:
这段是符合题意的改良代码,一开始我提交的时候没有做orz的输出,由于题的数据问题导致没有设计orz也过了