最小生成树kruskal
来源:互联网 发布:淘宝网如何提高流量 编辑:程序博客网 时间:2024/06/16 21:54
离散里学过原理了,就是避圈法,将边排序,不断选取最小的,并且不能形成圈(这个就是用并查集来判断)直至全部选完。
自己手写了个代码,差不多就是白书上的,没有检查正确性
const int maxn = 100000 + 5;const int inf = 0x3f3f3f3f;int rank[maxn];int fa[maxn];int V;//顶点数void init(){ for(int i=0; i<V; i++) { fa[i] = i; rank[i] = 0; }}int find(int x){ if(fa[x] == x) return fa[x]; else return fa[x] = find(fa[x]);}bool same(int x, int y){ x = find(x); y = find(y); if(x == y) return true; return false;}void unite(int x, int y){ x = find(x); y = find(y); if(x == y) return; if(rank[x] < rank[y]) fa[x] = y; else { fa[y] = x; if(rank[x] == rank[y]) rank[x]++; } return;}struct edge{ int u; int v; int cost;};edge bian[maxn];int V,E;//边数和顶点数bool cmp(edge p ,edge q){ return p.cost < q.cost;}int kruskal(){ sort(bian,bian,cmp); init(V);//并查集初始化 int ans = 0; for(int i=0; i<E; i++) { edge sam = bian[i]; if(!same(sam.v,sam.u)) { unite(sam.v,sam.u); ans += sam.cost; } } return ans;}
阅读全文
0 0
- 最小生成树Kruskal
- kruskal 最小生成树
- 最小生成树 kruskal
- kruskal 最小生成树
- 最小生成树-Kruskal
- 最小生成树kruskal
- 最小生成树---Kruskal
- Kruskal 最小生成树
- 最小生成树 Kruskal
- 最小生成树--Kruskal
- Kruskal 最小生成树
- 最小生成树-Kruskal
- 最小生成树Kruskal
- Kruskal 最小生成树
- kruskal最小生成树
- 最小生成树-Kruskal
- 最小生成树 kruskal()
- 最小生成树 - Kruskal()
- 使用Zoiper与freeSWITCH开视频会议
- SSM整合单表的mapper映射文件
- 静态库和动态库的优缺点
- 解决连接ORACLE错误一例:ORA-01033: ORACLE 正在初始化或关闭
- 大数据系统数据采集产品的架构分析
- 最小生成树kruskal
- 17岁码农
- 记录一哈在操作数据库中遇到的不懂
- 9.8-全栈Java笔记:Iterator(迭代器)接口
- scikit-learn学习之贝叶斯分类算法
- STM32F103--BKP
- 关于 HTTP meta 的 IE=edge 说明
- Multipath多路径冗余全解析
- 欢迎使用CSDN-markdown编辑器