POJ 1797 Heavy Transportation(Kruskal灵活使用)(瓶颈树)
题意:
求1到n路径上最大的最小值。
原因:样例输入
1
3 3
1 2 3
1 3 4
2 3 5
1-2最多可以运输3,2-3可最多以运输5,但是2的来源只有3,所以路径1-2-3上能运输的量为3
1-3可以运输4,所以结果就是4。
可以很明显的看出一条路径上能够运输的最大值与该路径上最小的边相等,所以只需求出最大的最小值即可。
最大生成树一定是一棵瓶颈树,由瓶颈树的性质可知,最小边一定最大。
按权值从大到小排序,跑一遍Kruskal求最大生成树记录最小值,当1与n联通时,即利用并查集判断find(1)==find(n)时返回此时最小值即可。
注意输出格式,每一个例子后都有一个空行(包括最后一个例子)。

#include <iostream>
#include <cstring>
#include <cstdio>
#include <algorithm>
using namespace std; const int maxn = + ;
const int inf = 0x3f3f3f3f;
int n, m, t, pre[maxn];
struct edge{
int u, v, w;
bool operator < ( const edge &a )const{
return w>a.w;
}
} ed[maxn*maxn];
inline int find( int x ){
return pre[x]==x ? x:pre[x] = find(pre[x]);
} inline int min( int a, int b ){
return a<b ?a:b;
} inline int kru(){
sort( ed, ed+m );
int res = inf;
for( int i=; i<m; i++ ){
int fx = find(ed[i].u);
int fy = find(ed[i].v);
if( fx!=fy ){
pre[fx] = fy;
res = min( res, ed[i].w );
if( find()==find(n) ) break; //此处其实不用求min 只需当find(i)==find(n)时让res = ed[i].w 然后break即可
}
}
return res;
} int main(){
scanf("%d", &t);
for( int k=; k<=t; k++ ){
scanf("%d%d", &n, &m);
for( int i=; i<=n; i++ ) pre[i] = i;
for( int i=; i<m; i++ )
scanf("%d%d%d",&ed[i].u, &ed[i].v, &ed[i].w);
int ans = kru();
printf("Scenario #%d:\n", k);
printf("%d\n\n", ans);
} return ;
}
POJ 1797 Heavy Transportation(Kruskal灵活使用)(瓶颈树)的更多相关文章
- poj 1797 Heavy Transportation(最大生成树)
poj 1797 Heavy Transportation Description Background Hugo Heavy is happy. After the breakdown of the ...
- POJ 1797 Heavy Transportation / SCU 1819 Heavy Transportation (图论,最短路径)
POJ 1797 Heavy Transportation / SCU 1819 Heavy Transportation (图论,最短路径) Description Background Hugo ...
- POJ.1797 Heavy Transportation (Dijkstra变形)
POJ.1797 Heavy Transportation (Dijkstra变形) 题意分析 给出n个点,m条边的城市网络,其中 x y d 代表由x到y(或由y到x)的公路所能承受的最大重量为d, ...
- POJ 1797 Heavy Transportation
题目链接:http://poj.org/problem?id=1797 Heavy Transportation Time Limit: 3000MS Memory Limit: 30000K T ...
- POJ 1797 Heavy Transportation SPFA变形
原题链接:http://poj.org/problem?id=1797 Heavy Transportation Time Limit: 3000MS Memory Limit: 30000K T ...
- POJ 1797 Heavy Transportation (Dijkstra变形)
F - Heavy Transportation Time Limit:3000MS Memory Limit:30000KB 64bit IO Format:%I64d & ...
- POJ 1797 ——Heavy Transportation——————【最短路、Dijkstra、最短边最大化】
Heavy Transportation Time Limit:3000MS Memory Limit:30000KB 64bit IO Format:%I64d & %I64 ...
- POJ 1797 Heavy Transportation (最大生成树)
题目链接:POJ 1797 Description Background Hugo Heavy is happy. After the breakdown of the Cargolifter pro ...
- POJ 1797 Heavy Transportation(最大生成树/最短路变形)
传送门 Heavy Transportation Time Limit: 3000MS Memory Limit: 30000K Total Submissions: 31882 Accept ...
随机推荐
- Web API之Web Components
本文参考<你的前端框架要被web组件替代了>. 于2011年面世的Web Components是一套功能组件,让开发者可以使用 HTML.CSS 和 JavaScript 创建可复用的组件 ...
- (记录问题)1.Canvas.drawArc()方法的问题
先看看异常: 一眼看去就知道说的是方法找不到错误 后面发现是系统版本过低,4.0的系统找不到5.0后添加的方法报的错. 修改后完美解决
- [UE4] TSharedPtr, TWeakObjectPtr and TUniquePtr
转自:https://dawnarc.com/2018/07/ue4-tsharedptr-tweakobjectptr-and-tuniqueptr/ UE4 的 TSharedPtr.TWeakO ...
- 二级C语言模拟试题(第1套)
1. 选择题. 1-1,判断各种变量所占的字节数. #include<stdio.h> int main() { char p[] = {'6','2','3'}, *q = p; int ...
- Navicat 12.1激活
去官网下载 https://www.navicat.com.cn/download/navicat-premium 然后下载这个破解包 第一个是整合了 navicat121_premium_cs_x6 ...
- JFR 使用记录
进程的内存信息,可以使用jmap 和 jstack 等dump出文件,使用jhat 分析 dump 文件.不过比较简陋. 可以不停进程的方式有 JFR 或者taobao 开源组件. 本篇只记录JFR相 ...
- springboot异步线程
前言 最近项目中出现了一个问题,发现自己的定时器任务在线上没有执行,但是在线下测试时却能执行,最后谷歌到了这篇文章SpringBoot踩坑日记-定时任务不定时了?; 本篇文章主要以自己在项目中遇到的问 ...
- Linux查看CPU信息计算CPU核数量
1. 物理CPU的个数: cat /proc/cpuinfo | grep "physical id" | sort | uniq | wc -l 2. 每个物理CPU的核心数量: ...
- golang微服务框架go-micro 入门笔记2.2 micro工具之微应用利器micro web
micro web micro 功能非常强大,本文将详细阐述micro web 命令行的功能 阅读本文前你可能需要进行如下知识储备 golang分布式微服务框架go-micro 入门笔记1:搭建go- ...
- np.any()基本用法与不一样环境中的用法
import numpy as npa=np.ones((2,3,4))b=np.array([1,2,3])c=b<2k=np.any(c) # 是或的关系,只要有一个满足,则输出为TRUEp ...