畅通工程之最低成本建设问题(最小生成树(Kruskal)+并查集)
来源:互联网 发布:如何成为淘宝小模特 编辑:程序博客网 时间:2024/04/29 03:10
题目链接
某地区经过对城镇交通状况的调查,得到现有城镇间快速道路的统计数据,并提出“畅通工程”的目标:使整个地区任何两个城镇间都可以实现快速交通(但不一定有直接的快速道路相连,只要互相间接通过快速路可达即可)。现得到城镇道路统计表,表中列出了有可能建设成快速路的若干条道路的成本,求畅通工程需要的最低成本。
输入格式:
输入的第一行给出城镇数目N (1<N≤1000)和候选道路数目M≤3N;随后的M行,每行给出3个正整数,分别是该条道路直接连通的两个城镇的编号(从1编号到N)以及该道路改建的预算成本。
输出格式:
输出畅通工程需要的最低成本。如果输入数据不足以保证畅通,则输出“Impossible”。
输入样例1:
6 15
1 2 5
1 3 3
1 4 7
1 5 4
1 6 2
2 3 4
2 4 6
2 5 2
2 6 6
3 4 6
3 5 1
3 6 1
4 5 10
4 6 8
5 6 3
输出样例1:
12
输入样例2:
5 4
1 2 1
2 3 2
3 1 3
4 5 4
输出样例2:
Impossible
#include<algorithm>#include<iostream>#include<vector>#include<cstdio>using namespace std;int f[1001];typedef struct E{ int xx; int yy; int zz;}E;E edge[3001];bool cmp(E a,E b){ return a.zz<b.zz;}int getf(int x){ if(f[x] == x) return x; f[x] = getf(f[x]); return f[x];}int merge(int x,int y){ int tx = getf(x); int ty = getf(y); if(tx!=ty){ f[ty] = tx; return 1; } return 0;}int main(){ int n,e; scanf("%d%d",&n,&e); for(int i = 1;i<=n;i++) f[i] = i; for(int i = 0;i<e;i++) scanf("%d%d%d",&edge[i].xx,&edge[i].yy,&edge[i].zz); //排序 sort(edge,edge+e,cmp); int cnt = 0;//计算边数 int sum = 0; for(int i = 0;i<e;i++){ if(merge(edge[i].xx,edge[i].yy)){ cnt++; sum += edge[i].zz; } if(cnt==n-1)//选择了n-1条边 break; } int sm = 0; for(int i = 1;i<=n;i++) f[i] == i?sm++:sm; if(sm>1||!sm) printf("Impossible\n"); else printf("%d\n",sum); return 0;}
阅读全文
0 0
- 畅通工程之最低成本建设问题(最小生成树(Kruskal)+并查集)
- Kruskal算法-畅通工程之最低成本建设问题.cpp
- 畅通工程之最低成本建设问题
- PTA 5-6 畅通工程之最低成本建设问题【Kruskal】
- 畅通工程之最低成本建设问题(30 分)
- 7-11 畅通工程之局部最小花费问题(最小生成树+并查集)
- HDOJ 1863畅通工程(最小生成树kruskal算法并查集实现)
- hdu 1233 还是畅通工程 最小生成树Kruskal算法(并查集)
- hdu 1233 还是畅通工程 Kruskal 最小生成树 并查集
- HDU 1233 还是畅通工程 最小生成树Kruskal算法/并查集
- hdu1875 畅通工程再续 并查集+kruskal最小生成树
- hdu 1233 还是畅通工程 (最小生成树,prim,优先队列,kruskal并查集)
- HDU-1863 畅通工程——并查集最小生成树Kruskal
- PTA5-2 畅通工程之最低成本建设问题 (克鲁斯卡尔)
- PAT 5-6 畅通工程之最低成本建设问题 【Prim】
- 5-4 畅通工程之最低成本建设问题 (30分)
- 习题8.4 畅通工程之最低成本建设问题(30 分)
- HDU 1233.还是畅通工程【最小生成树 kruskal算法(并查集)+prim算法】【1月8】
- C#基于WindowsMediaPlayer实现音视频文件播放器
- vue插件开发
- Java中普通代码块,构造代码块,静态代码块区别及代码示例
- android 开发 微博分享时遇到的坑
- Nginx配置Https访问,tomcat无法正确获取schema的问题
- 畅通工程之最低成本建设问题(最小生成树(Kruskal)+并查集)
- spring《三》
- java bpm平台3:web可视化工作流(整合activiti到项目中)
- TXT格式转XML的python程序
- vue组件开发练习--焦点图切换
- java代码连MongoDb报错 authentication failed
- matplotlib.pyplot中的subplot用法
- Android Studio For Mac 导入Percent 库
- AS 常用的快捷