POJ 2377 Bad Cowtractors(最大生成树--kruskul)
2015-08-13 09:05
441 查看
Bad Cowtractors
Description
Bessie has been hired to build a cheap internet network among Farmer John's N (2 <= N <= 1,000) barns that are conveniently numbered 1..N. FJ has already done some surveying, and found M (1 <= M <= 20,000) possible connection routes
between pairs of barns. Each possible connection route has an associated cost C (1 <= C <= 100,000). Farmer John wants to spend the least amount on connecting the network; he doesn't even want to pay Bessie.
Realizing Farmer John will not pay her, Bessie decides to do the worst job possible. She must decide on a set of connections to install so that (i) the total cost of these connections is as large as possible, (ii) all the barns are connected together (so that
it is possible to reach any barn from any other barn via a path of installed connections), and (iii) so that there are no cycles among the connections (which Farmer John would easily be able to detect). Conditions (ii) and (iii) ensure that the final set of
connections will look like a "tree".
Input
* Line 1: Two space-separated integers: N and M
* Lines 2..M+1: Each line contains three space-separated integers A, B, and C that describe a connection route between barns A and B of cost C.
Output
* Line 1: A single integer, containing the price of the most expensive tree connecting all the barns. If it is not possible to connect all the barns, output -1.
Sample Input
Sample Output
Time Limit: 1000MS | Memory Limit: 65536K | |
Total Submissions: 11964 | Accepted: 4971 |
Bessie has been hired to build a cheap internet network among Farmer John's N (2 <= N <= 1,000) barns that are conveniently numbered 1..N. FJ has already done some surveying, and found M (1 <= M <= 20,000) possible connection routes
between pairs of barns. Each possible connection route has an associated cost C (1 <= C <= 100,000). Farmer John wants to spend the least amount on connecting the network; he doesn't even want to pay Bessie.
Realizing Farmer John will not pay her, Bessie decides to do the worst job possible. She must decide on a set of connections to install so that (i) the total cost of these connections is as large as possible, (ii) all the barns are connected together (so that
it is possible to reach any barn from any other barn via a path of installed connections), and (iii) so that there are no cycles among the connections (which Farmer John would easily be able to detect). Conditions (ii) and (iii) ensure that the final set of
connections will look like a "tree".
Input
* Line 1: Two space-separated integers: N and M
* Lines 2..M+1: Each line contains three space-separated integers A, B, and C that describe a connection route between barns A and B of cost C.
Output
* Line 1: A single integer, containing the price of the most expensive tree connecting all the barns. If it is not possible to connect all the barns, output -1.
Sample Input
5 8 1 2 3 1 3 7 2 3 10 2 4 4 2 5 8 3 4 6 3 5 2 4 5 17
Sample Output
42 最大生成树,kruskul选边的时候先选最大的边就行了 ac代码:
#include<stdio.h> #include<string.h> #include<iostream> #include<algorithm> #define MAXN 100010 #define max(a,b) a>b?a:b #define min(a,b) a>b?b:a using namespace std; int pri[MAXN]; struct s { int a; int b; int cost; }dis[MAXN]; bool cmp(s aa,s bb) { return aa.cost>bb.cost; } int find(int x) { int r=x; while(r!=pri[r]) r=pri[r]; int i=x,j; while(i!=r) { j=pri[i]; pri[i]=r; i=j; } return r; } int main() { int n,m,sum,j,i,num; while(scanf("%d%d",&n,&m)!=EOF) { for(i=1;i<=n;i++) pri[i]=i; for(i=0;i<m;i++) { scanf("%d%d%d",&dis[i].a,&dis[i].b,&dis[i].cost); } sort(dis,dis+m,cmp); sum=0; num=1; for(i=0;i<m;i++) { int nx=find(dis[i].a); int ny=find(dis[i].b); if(nx!=ny) { pri[nx]=ny; num++; sum+=dis[i].cost; } } if(num==n) printf("%d\n",sum); else printf("-1\n"); } return 0; }
相关文章推荐
- 一致性hash算法在memcached中的使用
- 内外网数据库同步方式
- Codeforces Beta Round #92 (Div. 2 Only) B. Permutations
- Android RecyclerView的StaggeredGridLayoutManager和CardView
- MFC操作ini配置文件
- 模态 - block
- Win10的这些功能是否动摇了一个果粉的心
- 盗版win7/win8.1能升级win10吗?如何升级win10正式版?
- 学会在职场中成长
- iBatis2:SqlMap的配置
- Keepalived配置与使用(1)
- UI 06 UIScrollView基础
- D - 排列
- 图像形态学 - 图像金字塔(cvPyrDown、cvPyrUp)
- 【转】oracle的正则表达式
- [转]Java中this的意义
- leetcode_Decode Ways
- 保证完成任务
- ruby on rail 微信企业号回调模式 url初次验证时 签名的加密验证
- 我的高效编程秘诀