hdu 1863 畅通工程(kruskal算法)
来源:互联网 发布:分类信息采集软件 编辑:程序博客网 时间:2024/06/05 05:14
本题链接:点击打开链接
本题题意:
有n条路m个村庄,输入每条路连接哪两个村庄,及修该段路的费用,求使所有村庄均可畅通(并非两两均连通)
的最少费用。
解题思路:
此题与hdu 1233 还是畅通工程 相类似,均是使用kruskal算法思想。
具体请参考代码:
#include<stdio.h>#include<algorithm>using namespace std;int per[110];int n,m;struct node{int u,v,w;}a[110];int cmp(node a,node b){return a.w<b.w;}void init(){for(int i=1;i<=m;i++)per[i]=i;}int find(int x){if(x==per[x])return x;return per[x]=find(per[x]);}bool join(int x,int y){int fx=find(x);int fy=find(y);if(fx!=fy){per[fx]=fy;return true;}elsereturn false;}int main(){while(scanf("%d%d",&n,&m),n){for(int i=0;i<n;i++)scanf("%d%d%d",&a[i].u,&a[i].v,&a[i].w);init();if(n<m-1){printf("?\n");continue;}sort(a,a+n,cmp);int sum=0;for(int i=0;i<n;i++){if(join(a[i].u,a[i].v)){sum+=a[i].w;}}int cnt=0;for(int i=1;i<=m;i++)if(i==per[i])cnt++;if(cnt==1)printf("%d\n",sum);elseprintf("?\n");}return 0;}
0 0
- HDU 1863 畅通工程(kruskal算法)
- hdu 1863 畅通工程(kruskal算法)
- HDU 1863 畅通工程(Kruskal算法)
- hdu 1863 畅通工程kruskal算法
- HDU 1863 畅通工程 Kruskal算法
- hdu-1863-畅通工程-Kruskal算法-java
- hdu 1863 畅通工程 (最小生成树kruskal 算法)
- HDU 1863 畅通工程(Kruskal)
- HDU-#1863 畅通工程(Kruskal & Prim)
- HDU 1863 畅通工程(kruskal)
- hdu 1863 畅通工程(prim+kruskal)
- HDU:1863 畅通工程(kruskal)
- HDU 1863 畅通工程(Kruskal)
- HDU 1863 畅通工程 kruskal算法 最小生成树
- HDU 1875 畅通工程再续(Kruskal算法)
- HDU 1879 继续畅通工程(Kruskal算法)
- hdu 1863 畅通工程(prim算法实现和kruskal算法实现)
- 【最小生成树】(模板-kruskal算法)hdu 1863 畅通工程
- Android—获取view中的一个控件
- iOS-开发技巧-UILabel内容模糊的原因
- 史上最详细的Android Studio系列教程三--快捷键
- oc 和swift混编的时候打包ipa安装不了
- the selection cannot be run on any server解决办法
- hdu 1863 畅通工程(kruskal算法)
- HDOJ 1875 畅通工程再续(最小生成树)
- 《Python基础教程(第2版)》学习笔记(二):
- 【Lua】面向对象实现
- CentOS Linux下Java环境的安装和配置 (CentOS+JDK1.6.0_11)
- POJ 2195 && HDU 1533 Going Home(最小费用最大流-mcmf)
- for_each算法函数
- php的curl扩展抓取信息——模拟登陆成功却无法抓取页面等问题
- boundingRectWithSize计算高度不准确