HDU 1233最小生成树 Kruscal 算法
来源:互联网 发布:新加坡进出口数据 编辑:程序博客网 时间:2024/06/06 00:37
Kruscal 是一种贪心策略。
按边长从小到大排序,
枚举每条边时,考察这条边的两个定点:
1.这两个顶点属于同一个集合则舍弃这条边。
2.这两个顶点不属于同一个集合则采取这条边,同时合并这两个顶点。
判断两个点属于哪个集合需要用到并查集
下面AC代码
#include<cstdio>#include<algorithm>using namespace std;typedef long long ll;const int maxn = 105;int n;struct edge{ int from,to; ll cost;}E[maxn*maxn];int father[maxn];int cmp(edge n1,edge n2){ return n1.cost < n2.cost;}void init(){ // 并查集初始化 初始化为:各个顶点孤立 for(int i = 1;i <= n;++i) father[i] = i;}int find(int x){ // 并查集 if(x == father[x]) return x; else return father[x] = find(father[x]);}int main(){ while(scanf("%d",&n) != EOF){ if(n == 0) break; init(); for(int i = 0;i < n*(n-1)/2;++i){ scanf("%d%d%lld",&E[i].from,&E[i].to,&E[i].cost); } sort(E,E+n*(n-1)/2,cmp); ll res = 0; for(int i = 0;i < n*(n-1)/2;++i){ if(find(E[i].from) == find(E[i].to)) continue; // 判断两个顶点是否属于同一个集合 res += E[i].cost; father[find(E[i].from)] = find(E[i].to); } printf("%lld\n",res); } return 0;}
0 0
- HDU 1233最小生成树 Kruscal 算法
- kruscal最小生成树算法
- 最小生成树-Kruscal算法
- 算法基础 - 最小生成树(Kruscal算法)
- HDU-1233-还是畅通工程(最小生成树kruscal)
- 最小生成树之kruscal算法
- 最小生成树(prim和kruscal算法)
- 最小生成树 Kruscal算法--poj 2377
- kruscal算法求最小生成树总结
- hiho1098 : 最小生成树·Kruscal算法
- Kruscal最小生成树算法(C++)
- 最小生成树 kruscal算法 C语言
- 最小生成树 Kruscal
- 最小生成树~kruscal
- 最小生成树-kruscal
- 最小生成树 Prim、Kruscal算法 (以HDU 1863为例)
- 最小生成树的prim算法和kruscal算法
- 最小生成树 Kruscal与Prime HDU 1233 还是畅通工程 HDU 1301 Jungle Roads
- mvc4源码调试“未能加载文件或程序集“System.Web.Mvc”或它的某一个依赖项。未能验证强名称签名。解决办法
- 点击图片,弹出层显示图片
- caffe笔记6——自定义layer
- 55 leetcode - N-Queens II
- Using kgdb, kdb and the kernel debugger internals
- HDU 1233最小生成树 Kruscal 算法
- 对matlab中gradient函数的理解与C++中的应用
- Java提高篇-----关键字static
- 面试之前需要回顾的基本知识
- Ajax+Servlet+jsp仿百度搜索效果
- BZOJ2324: [ZJOI2011]营救皮卡丘
- Spring4MVC+Spring4+Hibernate4整合系列--(一)概述
- 日期方面操作
- RGB颜色参考