(POJ 1797) Heavy Transportation 最大生成树
题目链接:http://poj.org/problem?id=1797
Description Background
Hugo Heavy is happy. After the breakdown of the Cargolifter project he can now expand business. But he needs a clever man who tells him whether there really is a way from the place his customer has build his giant steel crane to the place where it is needed on which all streets can carry the weight.
Fortunately he already has a plan of the city with all streets and bridges and all the allowed weights.Unfortunately he has no idea how to find the the maximum weight capacity in order to tell his customer how heavy the crane may become. But you surely know. Problem
You are given the plan of the city, described by the streets (with weight limits) between the crossings, which are numbered from to n. Your task is to find the maximum weight that can be transported from crossing (Hugo's place) to crossing n (the customer's place). You may assume that there is at least one path. All streets can be travelled in both directions.
Input The first line contains the number of scenarios (city plans). For each city the number n of street crossings ( <= n <= ) and number m of streets are given on the first line. The following m lines contain triples of integers specifying start and end crossing of the street and the maximum allowed weight, which is positive and not larger than . There will be at most one street between each pair of crossings.
Output The output for every scenario begins with a line containing "Scenario #i:", where i is the number of the scenario starting at . Then print a single line containing the maximum allowed weight that Hugo can transport to the customer. Terminate the output for the scenario with a blank line.
Sample Input Sample Output Scenario #:
题目大意:有N个城市,有M条路,每条路上有一个最大承重量,问从1到N的道路上能通过的最大承重量是多少?
思路:就是求最大生成树上的最小值,dis【i】表示1到i的最大承重数
#include<stdio.h>
#include<cstdlib>
#include<cstring>
#include<algorithm>
#include<queue>
#include <stack>
using namespace std;
#define ll long long
#define INF 0x3f3f3f3f
#define met(a,b) memset(a,b,sizeof(a))
#define N 1010
int Map[N][N];
int vis[N],dis[N],n,minn;
int dij(int s)
{
vis[s]=;
for(int i=;i<=n;i++)
dis[i]=Map[s][i];
for(int i=;i<n;i++)
{
int ans=-INF,k=;
for(int j=;j<=n;j++)
{
if(!vis[j] && ans<dis[j])
ans=dis[k=j]; /// 找到之中的最大值
}
vis[k]=;
for(int j=;j<=n;j++)
{
if(!vis[j])
{
int m=min(Map[k][j],dis[k]) ///经过k点到j点,取从1到k点的最大承重量与从k到j点之间的最大承重量之间较小的值
}
dis[j]=max(dis[j],k);///从1到j是否要经过k点,如果经过k点的最大承重量大就经过k点
}
}
return dis[n];///1到每个点的最大承重量
}
int main()
{
int t,m,x,b,l,con=;
scanf("%d",&t);
while(t--)
{
scanf("%d %d",&n,&m);
met(Map,);
for(int i=;i<m;i++)
{
scanf("%d %d %d",&x,&b,&l);
Map[x][b]=Map[b][x]=l; ///道路是双向的
}
met(vis,);
printf("Scenario #%d:\n%d\n\n",con++,dij());
}
return ;
}
(POJ 1797) Heavy Transportation 最大生成树的更多相关文章
- POJ 1797 Heavy Transportation (最大生成树)
题目链接:POJ 1797 Description Background Hugo Heavy is happy. After the breakdown of the Cargolifter pro ...
- 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(最大生成树/最短路变形)
传送门 Heavy Transportation Time Limit: 3000MS Memory Limit: 30000K Total Submissions: 31882 Accept ...
- 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 (Dijkstra)
题目链接:POJ 1797 Description Background Hugo Heavy is happy. After the breakdown of the Cargolifter pro ...
随机推荐
- OpenscenGraph中控制swapbuffer的方法(用于多机大屏幕同步显示机制)
**************************************************************************************************** ...
- Android版本号的识别——$(PLATFORM_VERSION)
#/******************************************************************************#*@file Android.mk#* ...
- pthread实现多线程查询(转)
导读:大多数网站的性能瓶颈不在PHP服务器上,因为它可以简单地通过横向增加服务器或CPU核数来轻松应对(对于各种云主机,增加VPS或CPU核数就更方便了,直接以备份镜像增加VPS,连操作系统.环境都不 ...
- C++中栈区 堆区 常量区
原文地址:http://blog.csdn.net/xcyuzhen/article/details/4543264 C++中栈区 堆区 常量区(由一道面试题目而学习) -- : #include&l ...
- C++赋值运算符函数
为类添加赋值运算符函数: 类型定义 class CMyString { public: CMyString(char *pData = NULL); CMyString(const CMyString ...
- 整型数组与vector对象之间的相互初始化
#include<iostream> #include<vector> #include<string> using namespace std; int main ...
- 几个容易出错的css盒子模型细节
css是前端必须掌握的技能之一.其中的box模型,如图所示: 大体就是border.margin.padding和content,概念挺好理解.但当盒子模型与其他属性一块使用时产生的现象,或许您还难以 ...
- MySQL(19):SQL语句(MySQL)大全
SQL语句大全一.创建和删除数据库 1.创建用户 //创建用户且置密码,在MySQL中行,但在Oracle中行 ----必须在超级管理员身份下操作 create user hncu identifi ...
- Content-Type一览
文件扩展名 Content-Type(Mime-Type) 文件扩展名 Content-Type(Mime-Type) .*( 二进制流,不知道下载文件类型) application/octet-st ...
- mysql开启外联方法
1.修改Mysql配置文件 /etc/mysql/my.cnf 注释掉 bind-address = 127.0.0.1 2.重启Mysql /etc/init.d/mysql restart 3.r ...