Codevs 1231 最优布线问题
来源:互联网 发布:mac下的git客户端 编辑:程序博客网 时间:2024/05/17 01:13
题目描述 Description
学校需要将n台计算机连接起来,不同的2台计算机之间的连接费用可能是不同的。为了节省费用,我们考虑采用间接数据传输结束,就是一台计算机可以间接地通过其他计算机实现和另外一台计算机连接。
为了使得任意两台计算机之间都是连通的(不管是直接还是间接的),需要在若干台计算机之间用网线直接连接,现在想使得总的连接费用最省,让你编程计算这个最小的费用。
输入描述 Input Description
输入第一行为两个整数n,m(2<=n<=100000,2<=m<=100000),表示计算机总数,和可以互相建立连接的连接个数。接下来m行,每行三个整数a,b,c 表示在机器a和机器b之间建立连接的话费是c。(题目保证一定存在可行的连通方案, 数据中可能存在权值不一样的重边,但是保证没有自环)
输出描述 Output Description
输出只有一行一个整数,表示最省的总连接费用。
样例输入 Sample Input
3 3
1 2 1
1 3 2
2 3 1
样例输出 Sample Output
2
数据范围及提示 Data Size & Hint
最终答案需要用long long类型来保存重点内容
题意:连接所有城市,求最小费用
// 最小生成树裸题#include<iostream>#include<cstdio>#include<algorithm>using namespace std;typedef long long LL;const int size=200001;LL n,m;LL fa[size];LL ans=0; struct node{ LL f,t,c;}e[size];bool cmp(node a,node b){ return a.c<b.c;}LL find(LL x){ return fa[x]==x?x:fa[x]=find(fa[x]);}void kru(){ sort(e+1,e+m+1,cmp); for(int i=1;i<=m;i++) { LL fx=find(e[i].f),fy=find(e[i].t); if(fx!=fy) { fa[fx]=fy; ans+=e[i].c; } } printf("%lld\n",ans);}int main(){ scanf("%lld%lld",&n,&m); for(int i=1;i<=m;i++) { scanf("%lld%lld%lld",&e[i].f,&e[i].t,&e[i].c); } for(int i=1;i<=n;i++) fa[i]=i; kru(); return 0;}
不是最短路,who know 哪两台电脑之间的“路”最短,都算一遍?大清早发疯想这个问题……
阅读全文
0 0
- 【codevs 1231】 最优布线问题
- CODEVS 1231最优布线问题
- Codevs 1231 最优布线问题
- CODEVS 1231 最优布线问题
- codevs 1231 最优布线问题
- Codevs 1231 最优布线问题
- 【codevs 1231】最优布线问题
- 【Codevs】1231 最优布线问题 && kruskal模板
- codevs 1231_最优布线问题_最小生成树
- codevs 1231 最优布线问题(最小生成树模板)
- codevs 1231 最优布线问题 并查集 解题报告
- 1231 最优布线问题
- WikiOI 1231 最优布线问题
- wikioi 1231 最优布线问题
- wikioi 1231 最优布线问题
- 1231 最优布线问题 -- kruskal
- 1231 最优布线问题 kruskal
- 最优布线问题
- 一个简单的Web登录程序 GET和POST的区别03
- 关于JavaString
- 51nod P1183 编辑距离
- IIS ASP.net项目 定时器失效?
- Loop Invariant Proof examples
- Codevs 1231 最优布线问题
- HTTP协议—— 简单认识TCP/IP协议
- 微信公众号开发的4大操作类型-微信开发教程15
- Swift4学习笔记-1.2 版本兼容性
- Js———数据类型、操作符、语句 (基本概念)
- 微信支付服务商开发能力说明文档范本-微信服务商开发能力说明文档下载
- 脏读、不可重复读 共享锁、悲观锁
- 素数筛
- Swift4学习笔记-1.3 Swift之旅