Heavy Transportation
Time Limit: 3000MS   Memory Limit: 30000K
        

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 1 to n. Your task is to find the maximum weight that can be transported from crossing 1 (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 (1 <= n <= 1000) 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 1000000. 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 1. 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

1
3 3
1 2 3
1 3 4
2 3 5

Sample Output

Scenario #1:
4

Source

TUD Programming Contest 2004, Darmstadt, Germany

其实这个题看了好久都没搞懂意思,然后找了找博客原来就是给定n个站点(就这样理解吧),m条路,两个站点之间有且只有一条路,每条路都有一个最大载重量,求整个路径组成的图中的最大的承重;比如,1到2之间的载重是3,超过3便不能从这条路上过,而1到3之间的载重是4,这时已经将图连接起来了,所以最大值是4,如果选1->2->3,则1、2之间的路就不能过重量为5的升降机;

这样,就相当于求一个最大生成树的权值最小的那条边,不过用生成树的方法不是超时就RE,只好用最短路中的一个算法解决了,我们看,既然dijkstra是求单源的最短路,d[i]存储的是从起始点到i点的最短路,那么我们就用它来存起始点到i点权值最小的那个;这样答案不就出来了;想想看,这道题逻辑性很强,求能承载的最大重量实际上是求整个联通图中权值最小的,就像短板原理--能装多少水取决于最短的那块木板;

Kruskal生成树:RE,数组开大了又会超时;

#include<cstdio>
#include<cmath>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
const int N=1000+10;
struct node
{
int u,v,w;
}a[N];
int n,m,f[N];
int find(int x)
{
return f[x]==-1?x:f[x]=find(f[x]);
}
int cmp(node a,node b)
{
return a.w>b.w;
}
int ks(int n,int m)
{
for(int i=0;i<m;i++)
scanf("%d%d%d",&a[i].u,&a[i].v,&a[i].w);
sort(a,a+m,cmp);
int minn=10000000;
memset(f,-1,sizeof(f));
for(int i=0;i<m;i++)
{
int x=find(a[i].u);
int y=find(a[i].v);
if(x!=y)
{
minn=min(minn,a[i].w);
f[x]=y;
}
if(find(1)==find(n))
break;
}
return minn;
}
int main()
{
int t;
scanf("%d",&t);
int t1=t;
while(t--)
{
memset(a,0,sizeof(a));
scanf("%d%d",&n,&m);
int x=ks(n,m);
printf("Scenario #%d:\n%d\n",t1-t,x);
}
return 0;
}

Dijkstra最短路变形:AC

#include<cstdio>
#include<cmath>
#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
const int N=1005;
int w[N][N],v[N],d[N],n,m,t,t1;
void dijkstra()
{
int a,b,c,i,j;
memset(w,0,sizeof(w));
for(i=1; i<=m; i++)
{
scanf("%d%d%d",&a,&b,&c);
w[a][b]=w[b][a]=c;
}
memset(v,0,sizeof(v));
for(i=1; i<=n; i++)
d[i]=w[1][i];
for(i=1;i<=n;i++)
{
int x,m=-1;
for(j=1;j<=n;j++)
if(!v[j]&&d[j]>m)
m=d[x=j];
v[x]=1;
for(j=1;j<=n;j++)
if(!v[j] && d[j]<min(d[x],w[x][j]))
d[j]=min(d[x],w[x][j]);
}
printf("Scenario #%d:\n",t1-t);
printf("%d\n\n",d[n]);
}
int main()
{
scanf("%d",&t);
t1=t;
while(t--)
{
scanf("%d%d",&n,&m);
dijkstra();
}
return 0;
}

POJ-1797Heavy Transportation,最短路变形,用dijkstra稍加修改就可以了;的更多相关文章

  1. POJ 1797 Heavy Transportation 最短路变形(dijkstra算法)

    题目:click here 题意: 有n个城市,m条道路,在每条道路上有一个承载量,现在要求从1到n城市最大承载量,而最大承载量就是从城市1到城市n所有通路上的最大承载量.分析: 其实这个求最大边可以 ...

  2. POJ 2253 Frogger ( 最短路变形 || 最小生成树 )

    题意 : 给出二维平面上 N 个点,前两个点为起点和终点,问你从起点到终点的所有路径中拥有最短两点间距是多少. 分析 : ① 考虑最小生成树中 Kruskal 算法,在建树的过程中贪心的从最小的边一个 ...

  3. poj 1797Heavy Transportation(dijkstra变形)

    题目链接:http://poj.org/problem?id=1797 题意:有n个城市,m条道路,在每条道路上有一个承载量,现在要求从1到n城市最大承载量,而最大承载量就是从城市1到城市n所有通路上 ...

  4. POJ1797 Heavy Transportation —— 最短路变形

    题目链接:http://poj.org/problem?id=1797 Heavy Transportation Time Limit: 3000MS   Memory Limit: 30000K T ...

  5. POJ 2253 Frogger -- 最短路变形

    这题的坑点在POJ输出double不能用%.lf而要用%.f...真是神坑. 题意:给出一个无向图,求节点1到2之间的最大边的边权的最小值. 算法:Dijkstra 题目每次选择权值最小的边进行延伸访 ...

  6. Heavy Transportation POJ 1797 最短路变形

    Heavy Transportation POJ 1797 最短路变形 题意 原题链接 题意大体就是说在一个地图上,有n个城市,编号从1 2 3 ... n,m条路,每条路都有相应的承重能力,然后让你 ...

  7. POJ 3635 - Full Tank? - [最短路变形][手写二叉堆优化Dijkstra][配对堆优化Dijkstra]

    题目链接:http://poj.org/problem?id=3635 题意题解等均参考:POJ 3635 - Full Tank? - [最短路变形][优先队列优化Dijkstra]. 一些口胡: ...

  8. POJ 3635 - Full Tank? - [最短路变形][优先队列优化Dijkstra]

    题目链接:http://poj.org/problem?id=3635 Description After going through the receipts from your car trip ...

  9. POJ 2253 Frogger【最短路变形——路径上最小的最大权】

    链接: http://poj.org/problem?id=2253 http://acm.hust.edu.cn/vjudge/contest/view.action?cid=22010#probl ...

随机推荐

  1. 520 Detect Capital 检测大写字母

    给定一个单词,你需要判断单词的大写使用是否正确.我们定义,在以下情况时,单词的大写用法是正确的:    全部字母都是大写,比如"USA".    单词中所有字母都不是大写,比如&q ...

  2. codeblock 16.01

    1.不希望for (int i = 1; i <= n; ++i) { } 中间按下去后,自动缩进到中间,只缩进到下一行. 可以去掉其中一个. 2.不自动完成,就是出现一个括号后不补充另一个. ...

  3. Hadoop调度框架

        大数据协作框架是一个桐城,就是Hadoop2生态系统中几个辅助的Hadoop2.x框架.主要如下: 1,数据转换工具Sqoop 2,文件搜集框架Flume 3,任务调度框架Oozie 4,大数 ...

  4. android开发学习 ------- 【转】EventBus的学习理解

    EventBus是一个Android端优化的publish/subscribe消息总线,简化了应用程序内各组件间.组件与后台线程间的通信. 比如请求网络,等网络返回时通过Handler或Broadca ...

  5. hihocoder offer收割编程练习赛9 B 水陆距离

    思路: 宽搜,多个起点. 实现: #include <iostream> #include <cstdio> #include <algorithm> #inclu ...

  6. 【学习笔记】深入理解js原型和闭包(4)——隐式原型

    注意:本文不是javascript基础教程,如果你没有接触过原型的基本知识,应该先去了解一下,推荐看<javascript高级程序设计(第三版)>第6章:面向对象的程序设计. 上节已经提到 ...

  7. 【人工智能系列】python的Quepy库的学习

    第一篇 了解 什么是Quepy quepy是一个Python框架改造自然语言问题在数据库查询语言查询.它可以很容易地定制不同类型的问题,在自然语言和数据库查询.因此,用很少的代码,你可以建立自己的系统 ...

  8. reciting

    When I was seventeen, I read a quote that went something like, '' if you live your each day as if it ...

  9. jquery 定位

    jquery 定位 <html> <head> <title>jquery 定位</title> </head> <body> ...

  10. Java中的代理--proxy

    讲到代理,好像在之前的springMVC,还是spring中或者是hibernate中学习过,并没有特别在意,这次好好理解一下.(原来是在spring中的AOP,面向切面 Aspect Oriente ...