HDU 1879 继续畅通工程(最小生成树)
来源:互联网 发布:微信摇一摇红包软件 编辑:程序博客网 时间:2024/04/29 00:52
原题地址
继续畅通工程
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 22479 Accepted Submission(s): 9600
Problem Description
省政府“畅通工程”的目标是使全省任何两个村庄间都可以实现公路交通(但不一定有直接的公路相连,只要能间接通过公路可达即可)。现得到城镇道路统计表,表中列出了任意两城镇间修建道路的费用,以及该道路是否已经修通的状态。现请你编写程序,计算出全省畅通需要的最低成本。
Input
测试输入包含若干测试用例。每个测试用例的第1行给出村庄数目N ( 1< N < 100 );随后的 N(N-1)/2 行对应村庄间道路的成本及修建状态,每行给4个正整数,分别是两个村庄的编号(从1编号到N),此两村庄间道路的成本,以及修建状态:1表示已建,0表示未建。
当N为0时输入结束。
当N为0时输入结束。
Output
每个测试用例的输出占一行,输出全省畅通需要的最低成本。
Sample Input
31 2 1 01 3 2 02 3 4 031 2 1 01 3 2 02 3 4 131 2 1 01 3 2 12 3 4 10
Sample Output
310
最小生成树。不过在记录边的时候要做点小处理:把已经修建好的路,它的成本设为0,没修好的路,成本就是输入的成本。然后再排序,最小生成树
AC代码:
#include<cstdio>#include<cstring>#include<algorithm>using namespace std;struct nodes{ int a; int b; int val;} node[11111];bool cmp(nodes a,nodes b){ return a.val<b.val;}int par[111];int fin(int a){ int p=a; while(par[p]!=p) { p=par[p]; } int x=a,y; while(x!=par[x]) { y=par[x]; par[x]=p; x=y; } return p;}void join(int a,int b){ int p1=fin(a); int p2=fin(b); if(p1!=p2) { par[p1]=p2; }}int main(){ int n; while(~scanf("%d",&n)&&n) { for(int i=0; i<n; i++) { par[i+1]=i+1; } int m=(n-1)*n/2; for(int i=0; i<m; i++) { int flag,nums; scanf("%d%d%d%d",&node[i].a,&node[i].b,&nums,&flag); if(flag) { node[i].val=0; } else { node[i].val=nums; } } sort(node,node+m,cmp); int ans=0; int k=0; for(int i=0; i<m; i++) { if(fin(node[i].a)!=fin(node[i].b)) { ans+=node[i].val; join(node[i].a,node[i].b); k++; if(k==n-1) break; } } printf("%d\n",ans); } return 0;}
0 0
- HDU-1879 继续畅通工程(最小生成树[Prim])
- HDU 1879 继续畅通工程(最小生成树Kruskal)
- 【HDU】-1879-继续畅通工程(最小生成树)
- HDU 1879 继续畅通工程(最小生成树 Kruskal)
- HDU 1879 继续畅通工程(最小生成树)
- HDU 1879 继续畅通工程(最小生成树-Kruskal)
- hdu 1879 继续畅通工程(最小生成树,prim)
- 继续畅通工程 hdu 最小生成树
- HDU 1879 继续畅通工程(最小生成树 Kruskal算法)
- HDU oj 1879 继续畅通工程 最小生成树
- HDU 1879 继续畅通工程 最小生成树-Kruskal
- hdu 1879 继续畅通工程 最小生成树
- HDU 1879 继续畅通工程 (最小生成树)
- hdu 1879 继续畅通工程 最小生成树
- HDU 1879 继续畅通工程(最小生成树)
- hdu 1879 继续畅通工程(图论:最小生成树)
- hdu 1879——继续畅通工程 最小生成树
- 最小生成树:HDU 1879继续畅通工程
- Android底层开发学习笔记 第一天
- Quagga是我在一家做交换机公司实习时要求学习的,不过我还没怎么学就实习结束了
- 图像增强之02直方图均衡化
- 考试题试卷分享(长郡)
- shy
- HDU 1879 继续畅通工程(最小生成树)
- HDU2571 命运
- STM32入门实例——语音存储回放系统软件实现
- 教Kindle新手 手动升级Kindle固件至5.8.5.0.1 全过程
- 【多媒体】媒体的概念和分类
- leetcode-33-Search in Rotated Sorted Array 查找
- Android"挂逼"修炼之行---微信实现本地视频发布到朋友圈功能
- 为ViewPager便捷设置网络或者本地图片
- HDU 4352 XHXJ's LIS【数位DP】