Kruskal算法+并查集实现
来源:互联网 发布:au视频软件下载 编辑:程序博客网 时间:2024/05/21 06:47
对于稀疏图来说,用Kruskal写最小生成树效率更好,加上并查集,可对其进行优化。
Kruskal算法的步骤:
1.对所有边进行从小到大的排序。
2.每次选一条边(最小的边),如果形成环,就不加入(u,v)中,否则加入。那么加入的(u,v)一定是最佳的。
并查集:
我们可以把每个连通分量看成一个集合,该集合包含了连通分量的所有点。而具体的连通方式无关紧要,好比集合中的元素没有先后顺序之分,只有“属于”与“不属于”的区别。图的所有连通分量可以用若干个不相交集合来表示。
而并查集的精妙之处在于用数来表示集合。如果把x的父结点保存在p[x]中(如果没有父亲,p[x]=x),则不难写出结点x所在树的递归程序:
find(int
意思是,如果p[x]=x,说明x本身就是树根,因此返回x;否则返回x的父亲p[x]所在树的根结点。
既然每棵树表示的只是一个集合,因此树的形态是无关紧要的,并不需要在“查找”操作之后保持树的形态不变,只要顺便把遍历过的结点都改成树根的儿子,下次查找就会快很多了。如下图所示:
int
int
int
{
}
- Kruskal算法+并查集实现
- 并查集实现Kruskal算法
- Kruskal算法的并查集实现
- [容易] kruskal 算法并查集实现
- Kruskal算法 (并查集)
- Kruskal算法并查集和最小堆实现
- 最小生成树Kruskal算法+并查集实现
- hdoj 还是畅通工程 并查集实现Kruskal算法
- 最小生成树Kruskal算法+并查集实现
- 并查集实现最小生成树的kruskal算法
- 运用并查集与最小堆实现Kruskal算法
- hdu1879(并查集+Kruskal算法)
- HDU1863并查集和kruskal算法
- 图论 Kruskal算法 并查集
- poj1251 Kruskal算法+并查集
- Kruskal算法(并查集)
- kruskal+ 并查集
- Kruskal+并查集
- poj 1980 Unit Fraction Partition
- Edmonds_Karp算法(图论)
- Prim算法
- Dijkstra算法
- Bellman-Ford算法
- Kruskal算法+并查集实现
- 昂贵的聘礼(单源最短路问题)
- 内存分段和分页的区别
- 内部碎片与外部碎片
- 论C++类对象赋值
- mutable关键字
- 析构函数为什么要写成虚函数
- 结构与联合
- C/C++文件读写