HDU-1879 最小生成树(Kruskal)模板题
来源:互联网 发布:mac怎么退出应用 编辑:程序博客网 时间:2024/06/14 12:27
HDU-1879继续畅通工程
省政府“畅通工程”的目标是使全省任何两个村庄间都可以实现公路交通(但不一定有直接的公路相连,只要能间接通过公路可达即可)。现得到城镇道路统计表,表中列出了任意两城镇间修建道路的费用,以及该道路是否已经修通的状态。现请你编写程序,计算出全省畅通需要的最低成本。
当N为0时输入结束。
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
310
#include<stdio.h>#include<string.h>#include<algorithm>using namespace std;int n,f[110];struct edge{ int u,v,w,z;}mp[10000];int cmp(edge x,edge y){ return x.w<y.w;}int getf(int v){ if(f[v]==v) return v; else { f[v]=getf(f[v]); return f[v]; }}int mer(int v,int u){ int t1,t2; t1=getf(v); t2=getf(u); if(t1!=t2) { f[t2]=t1; return 1; } return 0;}int main(){ while(scanf("%d",&n)&&n) { int m=n*(n-1)/2,sum=0,cou=0; for(int i=0;i<m;i++) { scanf("%d%d%d%d",&mp[i].u,&mp[i].v,&mp[i].w,&mp[i].z); if(mp[i].z==1) mp[i].w=0; } sort(mp,mp+m,cmp); for(int i=1;i<=n;i++) f[i]=i; for(int i=0;i<m;i++) { if(mer(mp[i].u,mp[i].v)) { cou++; sum=sum+mp[i].w; } if(cou==n-1) break; } printf("%d\n",sum); } return 0;}
阅读全文
0 0
- HDU-1879 最小生成树(Kruskal)模板题
- 最小生成树(prim&kruskal)模板
- 最小生成树-Kruskal算法(模板)
- 最小生成树(Kruskal算法)模板
- 最小生成树-kruskal模板
- 最小生成树kruskal模板
- 【模板】最小生成树Kruskal
- 【模板】Kruskal 最小生成树
- 【模板】Kruskal 最小生成树
- 最小生成树-kruskal 模板
- Kruskal模板 最小生成树
- HDU 1879 最小生成树 prim + kruskal
- 最小生成树(kruskal) hdu 1233
- HDU 4786(最小生成树 kruskal)
- hdu 1301(最小生成树kruskal)
- HDU 1879 继续畅通工程(最小生成树Kruskal)
- HDU 1879 继续畅通工程(最小生成树 Kruskal)
- HDU 1879 继续畅通工程(最小生成树-Kruskal)
- log4j配置实例详解
- EventBus代替Intent将复杂对象传递给下一个即将启动的Activity
- 二进制简单计算-c基础第二课
- c++继承的等价意义及原因
- 4.10.2 字符图网格 程序答案
- HDU-1879 最小生成树(Kruskal)模板题
- 原型工具之团队协作: Axure VS Mockplus
- CentOS7 yum安装zabbix3.2.6
- Hadoop
- Ajax同步获取数据
- python_爬取音乐部落
- css盒模型
- 从分布式到zookeeper(1)
- 利用Vue.js来制作一个小的Demo1