poj 2377 无向图的最大生成树
来源:互联网 发布:java html标签转pdf 编辑:程序博客网 时间:2024/06/06 09:44
http://vjudge.net/contest/view.action?cid=48211#problem/E
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".
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.
* 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 81 2 31 3 72 3 102 4 42 5 83 4 63 5 24 5 17
Sample Output
42
Hint
OUTPUT DETAILS:
The most expensive tree has cost 17 + 8 + 10 + 7 = 42. It uses the following connections: 4 to 5, 2 to 5, 2 to 3, and 1 to 3.
The most expensive tree has cost 17 + 8 + 10 + 7 = 42. It uses the following connections: 4 to 5, 2 to 5, 2 to 3, and 1 to 3.
想想和最大费用最大流和最小费用最大流关系一样,我们在求最大生成树的时候只需要把题目中给出的所有权边去相反数,然后利用最小生成树的kruskal算法,将结果取相反数就是答案
#include <stdio.h>#include <string.h>#include <iostream>#include <algorithm>using namespace std;struct note{ int start; int end; int w;}edge[20005];int pa[20005];int n,m,k,p;bool cmp(note a,note b){ if(a.w<b.w) return true; return false;}void make_set(){ for(int i=0;i<=p;i++) pa[i]=i;}int find(int x){ if(x!=pa[x]) return pa[x]=find(pa[x]); return pa[x];}int kruskal(){ int i,ans=0; make_set(); sort(edge,edge+p,cmp); for(i=0;i<p;i++) { int x=find(edge[i].start); int y=find(edge[i].end); if(x!=y) { pa[y]=x; ans+=edge[i].w; } } return ans;}int main(){ int x,y,z; while(~scanf("%d%d",&n,&m)) { p=0; for(int i=0;i<m;i++) { scanf("%d%d%d",&x,&y,&z); edge[p].start=x; edge[p].end=y; edge[p++].w=-z; } int ans=-kruskal(); int sum=0; for(int i=1;i<=n;i++) if(pa[i]==i) sum++; //printf("%d\n",sum); if(sum==1) printf("%d\n",ans); else printf("-1\n"); } return 0;}
0 0
- poj 2377 无向图的最大生成树
- poj 3895 【无向图最大环】
- 无向图的生成
- POJ 2485 Highways 无向图最小生成树求最长的边
- 无向图的生成树和生成森林算法
- 无向图的最大割问题
- poj 1966(无向图的点连通度。。。。。最大流处理。。。)
- poj 1419 Graph Coloring(无向图的最大独立集)
- poj 3895(求无向图的最大简单环)
- 无向连通图的生成树个数
- prime算法求无向图的最小生成树
- 无向图的深度优先生成树
- 无向图的广度优先生成树
- 无向图的连通分量和生成树
- 无向连通图的生成树个数
- 无向网图的最小生成树--普里姆算法
- 无向网图的最小生成树---完整代码
- 无向连通图的生成树个数
- Mysql语句的练习笔记
- java UDP 入门
- 针对小白的Python入门教程——Python使用说明书
- mingw32-gcc.exe: error: CreateProcess: No such file or directory
- 字符串中单词的个数以及最大长度单词求解
- poj 2377 无向图的最大生成树
- 使用 F# 列表
- CENTOS编译安装PHP 5.5笔记
- OCP 1Z0 052 160
- 屌丝程序员赚钱之道目录
- Python六大开源框架对比:Web2py略胜一筹
- 在visual studio 2010上编译一个项目时系统报错,提示了问题补充的错误信息
- 值类型和引用类型的区别
- 屌丝程序员赚钱之道 之APP