Kruskal算法求最小生成树
2016-04-13 20:31
567 查看
Kruskal算法是根据权来筛选节点,也是采用贪心算法。
View Code
/// Kruskal ///初始化每个节点为独立的点,他的祖先为自己本身 void made(int n) { for(int i=0; i<=n; i++) father[i]=i; ///father[i]存的父亲的编号 } ///找x这个点的祖先 int find(int x) { if(x!=father[x]) father[x]=find(father[x]); return father[x]; } ///按权的大小排序 int cmp(const void *a,const void *b) { tree *aa=(tree *)a; tree *bb=(tree *)b; return aa->val-bb->val; } ///参数n为节点个数,m为权的个数 bool kru(int n,int m) { int i,j; qsort(p,m,sizeof(p[0]),cmp); ans=0; made(n); int cnt=0; for(i=0;i<m;i++) { int xx=find(p[i].x); int yy=find(p[i].y); if(xx==yy) continue; father[yy]=xx; ans+=p[i].val; cnt++; } if(cnt!=n-1) return false; else return true; }
View Code
相关文章推荐
- 我是一个线程
- FZUoj Problem 1884 排火车
- 分享JNI编码过程中获取java接口等公共类
- 基于scikit-learn工具的交叉检验 — cross_validation模型
- 量子计算磁共振原型机被激光脉冲原型机淘汰
- manacher算法总结
- iOS 6 Auto Layout NSLayoutConstraint 界面布局
- 13.KVM安装之网桥
- Newtonsoft.Json(Json.net)的基本用法
- Python写入CSV文件的问题
- 爆破vcrkme01(已补上注册机)
- 关于项目中上传图片时图片尺寸和大小的判断问题
- S5PV210的SD卡启动详解2
- StringBuffer的常用方法与操作
- C语言入门之指针用法教程
- leetcode之Merge Sorted Array
- node版本的切换(转)
- RSA算法-java
- java 中的Exception RuntimeException 区别
- 微信支付--网页版-V3-(2)