hdu1223(贪心+并查集=kruskal算法)
来源:互联网 发布:mac电脑安装双系统 编辑:程序博客网 时间:2024/06/05 19:32
这题意思是,求出形成不成环的图路线权值之和的最小值(每两个城市路线有权值),就先用一个结构体,把每组中那两个城市,城市之间权值,存下来,用这个权值排序,按从小到大,连接每两个城市,形成一个没有环的图,最后输出这个和。据称这个算法叫kruskal算法,还很很好理解的。
#include<cstdio>#include<algorithm>using namespace std;struct note{ int a,b,c;};struct note city[5001];int cmp(struct note x,struct note y){ return x.c<y.c;}int father[101],ok;void init(){ for(int i=0;i<101;i++) father[i]=i;}int find_father(int x){ return x==father[x]?x:find_father(father[x]);}void merge_father(int x,int y){ int tx=find_father(x); int ty=find_father(y); if(tx==ty) { ok=0; return; } else father[ty]=tx;}int main(){ int n; while(~scanf("%d",&n)&&n) { init(); int sum=0; for(int i=0;i<n*(n-1)/2;i++) scanf("%d %d %d",&city[i].a,&city[i].b,&city[i].c); sort(city,city+n*(n-1)/2,cmp); for(int i=0;i<n*(n-1)/2;i++) { ok=1; merge_father(city[i].a,city[i].b); if(ok) { sum+=city[i].c; } } printf("%d\n",sum); }}
0 0
- hdu1223(贪心+并查集=kruskal算法)
- Kruskal算法:贪心+并查集=最小生成树
- wikioi1069关押罪犯(贪心+并查集 kruskal算法)
- Kruskal算法(贪心+并查集=最小生成树)
- Kruskal算法(贪心+并查集=最小生成树)
- 自来水管道 (并查集+贪心==kruskal)
- 最小生成树(Kruskal算法)贪心算法 利用并查集
- hdu1223(kruskal)
- Kruskal算法(并查集)
- Kruskal算法 (并查集)
- poj1861最小生成树(并查集)-kruskal算法
- 最小生成树kruskal算法(并查集)
- 最小生成树kruskal算法(并查集)
- 数据结构之Kruskal算法(并查集的应用)
- kruskal算法学习笔记(并查集做法)
- hdu1879(并查集+Kruskal算法)
- Kruskal算法+并查集实现
- HDU1863并查集和kruskal算法
- lintcode:Rotate List
- thinkphp备忘
- android studio连接汇总
- Webx中自定义Valve
- C#简易教程
- hdu1223(贪心+并查集=kruskal算法)
- Android系统原理与源码分析(1):利用Java反射技术阻止通过按钮关闭对话框
- hihoCoder 1170 机器人 (状压dp)
- sql 分组取最新的数据
- 关于listview使用ArrayAdapter实现adapter定制的使用
- PHP初学体验
- storyboard创建的:设置tabbar的item选中状态的颜色和图片
- C++的函数重载
- 初学Android,手机管理器之自动挂断黑名单的来电(六十四)