畅通工程||HDU1863
来源:互联网 发布:网络阅读媒介有哪些 编辑:程序博客网 时间:2024/05/20 18:16
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1863
Problem Description
省政府“畅通工程”的目标是使全省任何两个村庄间都可以实现公路交通(但不一定有直接的公路相连,只要能间接通过公路可达即可)。经过调查评估,得到的统计表中列出了有可能建设公路的若干条道路的成本。现请你编写程序,计算出全省畅通需要的最低成本。
Input
测试输入包含若干测试用例。每个测试用例的第1行给出评估的道路条数 N、村庄数目M ( < 100 );随后的 N行对应村庄间道路的成本,每行给出一对正整数,分别是两个村庄的编号,以及此两村庄间道路的成本(也是正整数)。为简单起见,村庄从1到M编号。当N为0时,全部输入结束,相应的结果不要输出。
Output
对每个测试用例,在1行里输出全省畅通需要的最低成本。若统计数据不足以保证畅通,则输出“?”。
Sample Input
3 31 2 11 3 22 3 41 32 3 20 100
Sample Output
3?
题解:最小生成树中的kruskal算法,代码内有详解
#include<cstdio>#include<cstdlib>#include<cmath>#include<cstring>#include<iostream>#include<algorithm>using namespace std;int n,m,par[101];//刚开始定义把n放下面又开一行,结果进函数就变成101,玄学吗 struct edge//结构体变量存储边 { int u,v,w;}q[103];void initial()//初始化 { for(int i=1;i<=101;i++) par[i]=i;}int find(int x)//找祖宗 { if(x!=par[x]) par[x]=find(par[x]); return par[x];}bool unite(int x,int y)//合并 { int fx=find(x); int fy=find(y); if(fx!=fy)//祖宗不是一家就合并,返回真值 { par[fx]=fy; return true; } else return false;}void kruskal(){ int ans=0,u,v; int s=0; initial(); for(int i=0;i<m;i++) { u=q[i].u; v=q[i].v; if(unite(u,v)) { s+=q[i].w; ans++; } if(ans==n-1) break;//有n-1条边就够了,跳出 } if(ans==n-1) printf("%d\n",s); else//边数不够直接输出? printf("?\n");}bool cmp(edge a,edge b){ return a.w<b.w;}int main(){ while(scanf("%d%d",&m,&n),m!=0) { for(int i=0;i<m;i++) scanf("%d%d%d",&q[i].u,&q[i].v,&q[i].w); sort(q,q+m,cmp);//按权值从小到大排序 if(m>=n-1) { kruskal(); } else//边数不够直接输出? { printf("?\n"); } }return 0;}
阅读全文
0 0
- 畅通工程 hdu1863
- HDU1863畅通工程
- HDU1863--畅通工程
- hdu1863-畅通工程
- hdu1863 畅通工程
- HDU1863 畅通工程
- HDU1863畅通工程
- hdu1863畅通工程
- hdu1863 畅通工程 kruskal
- hdu1863畅通工程
- HDU1863:畅通工程(kruskal)
- HDU1863 畅通工程
- HDU1863----畅通工程
- hdu1863-畅通工程
- HDU1863 畅通工程
- 【prim】HDU1863畅通工程
- hdu1863 畅通工程
- hdu1863 畅通工程
- 判断一个路径是否存在
- for in循环
- 微信小程序中引用FontAwesome字体
- git学习笔记整理-3-
- Mac L2TP VPN无法连接问题
- 畅通工程||HDU1863
- 使用CRF++进行命名实体识别
- Linux环境下通过rpm安装gcc的顺序
- JUnit单元测试
- 寻找范围内”合数“
- android多语言国际化
- 详述快捷支付产品功能及设计要点
- 1、为什么caffe训练时训练集loss=0.06,验证集accuracy=0.98但测试集的准确率很低accuracy=0.67
- CodeForces 455A