赞
踩
首先,要知道树的一个定理:n各点用n - 1条边连接成一个连通块,形成的图形只可能是树,没有别的可能。
就是用来解决如何用最小的“代价”用n - 1条边连接n个点的问题。
Kruskal(克鲁斯卡尔)算法是一种巧妙利用并查集来求最小生成树的算法。(bz:如果没学过 不熟悉并查集,可以先去补补课,以下放一些并查集基本操作代码<函数>)
void initl (int x)
{
for (int i = 0; i <= x; i++)father[i] = i;
}
int find(int x)
{
if(father[x] == x)return x;
else return father[x] = find(father[x]);
}
void unionn(int x, int y)
{
x = find(x
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。