- 基本介绍
- 模板题目
- 代码实现
基本介绍
最小生成树问题一般有两种解法 Prim和Kruskal 因为之前学过并查集所以果断选择先学后者
Kruskal是一种利用并查集来求解最小生成树的算法 它将每一个联通块当作一个集合
先将边按从小到大的顺序排序 现在每一个点都是孤立的 并且自己成为一个集合 然后按排好的顺序枚举边 如果边连着两个集合 就加入最小生成树 一直到选出来n-1条边
用结构体存储 起点 终点 长度
struct point{
int x;
int y;
int z;
};
point a[size];
自定义sort
bool cmp(point a,point b)
{
return a.z<b.z;
}
感觉梳理不出什么来 都挺好理解的…
直接结合一下模板题目吧
模板题目
题目描述
如题,给出一个无向图,求出最小生成树,如果该图不连通,则输出orz
输入输出格式
输入格