Heavy Transportation(最短路)

Time limit:3000 ms
Memory limit:30000 kB
OS:Linux
judge:https://vjudge.net/contest/297882#problem/C

描述

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.

题意

雨果重很高兴。在卡戈利夫特项目崩溃后,他现在可以扩大业务了。但他需要一个聪明的人告诉他,从他客户建造巨型钢吊车的地方到所有街道都能承受重量的地方,是否真的有办法。

幸运的是,他已经制定了一个城市规划,包括所有街道和桥梁以及所有允许的重量。不幸的是,他不知道如何找到最大重量,以便告诉他的客户起重机可能变得有多重。但你肯定知道。

问题

根据交叉口之间的街道(有重量限制)描述的城市平面图,编号从1到N。您的任务是找到可以从交叉口1(雨果所在地)运输到交叉口N(客户所在地)的最大重量。您可以假定至少有一条路径。所有街道都可以双向行驶。

输入

第一行包含场景数量(城市规划)。每条城市的街道交叉口数量n(1<=n<=1000)和街道数量m在第一行给出。下面的m行包含三个整数,指定街道的起点和终点交叉点以及最大允许重量,这是正的,不大于1000000。每对交叉口之间最多有一条街道。

输出

每个场景的输出以包含“scenario_i:”的行开始,其中i是从1开始的场景数。然后打印一行包含雨果可以运输给客户的最大允许重量。用空行终止方案的输出。

Sample Input

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

Sample Output

Scenario #1:
4

代码

#include <iostream>
#include <algorithm>
#include <queue>
#include <vector>
#define _for(i, a) for(int i = 0; i < (a); i++)
#define _rep(i, a, b) for(int i = (a); i <= (b); i++)
#define maxn 1005
#define inf 0x3f3f3f3f
using namespace std;
struct poi {int v, w;poi() {}poi(int v, int w) :v(v), w(w) {}bool operator < (const poi tem) const {return w < tem.w;}
};
int n, m;
int dis[maxn];
bool vis[maxn];
vector<poi> mp[maxn];
void SPFA() {priority_queue<int> que;dis[1] = inf;vis[1] = 1;que.push(1);while (que.size()) {int tem = que.top();que.pop();vis[tem] = 0;_for(i, mp[tem].size()) {if (dis[mp[tem][i].v] < min(dis[tem], mp[tem][i].w)) {dis[mp[tem][i].v] = min(dis[tem], mp[tem][i].w);if (!vis[mp[tem][i].v]) {que.push(mp[tem][i].v);vis[mp[tem][i].v] = 1;}}}}
}
int main() {//freopen("in.txt", "r", stdin);int T;scanf("%d", &T);_rep(q, 1, T) {_for(i, maxn) dis[i] = -1;_for(i, maxn) mp[i].clear();scanf("%d%d", &n, &m);_for(i, m) {int a, b, c;scanf("%d%d%d", &a, &b, &c);mp[a].push_back(poi(b, c));mp[b].push_back(poi(a, c));}SPFA();printf("Scenario #%d:\n%d\n\n", q, dis[n]);}return 0;
}

Heavy Transportation(最短路)相关推荐

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

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

  2. 寒假集训 最短路(I - Heavy Transportation)dijkstra+堆优化

    今天的集训学习了最短路dijkstra的堆优化,把时间复杂度从朴素版的O()降至了O(n*logn+m). 首先,先上一段朴素版的代码. void dijkstra() {dist[1] = 0;fo ...

  3. POJ 1797 Heavy Transportation 解题报告

    分类:图论,生成树,最短路,并查集 作者:ACShiryu 时间:2011-7-28 地址:ACShiryu's Blog Heavy Transportation Time Limit: 3000M ...

  4. Heavy Transportation

    Heavy Transportation(POJ 1793) 写这题被坑了好几次,这题解法思路就是在最短路中用权值最大的边为基础不断更新可以用朴素dijkstra,堆优化dijkstra, spfa, ...

  5. C - Heavy Transportation POJ - 1797

    C - Heavy Transportation POJ - 1797 求从1~n的最大载货量 #include<iostream> #include<cstring> #in ...

  6. Heavy Transportation重型运输(Dijkstra算法 - 详解)

    目录 Heavy Transportation重型运输 题意描述及解题思路 这个题主要是给你多条雨果到客户位置的路,举个例子

  7. 【POJ No. 1797】重型运输 Heavy Transportation

    [POJ No. 1797]重型运输 Heavy Transportation POJ题目地址 [题意] Hugo需要将巨型起重机从工厂运输到他的客户所在的地方,经过的所有街道都必须能承受起重机的重量 ...

  8. POJ 1797 Heavy Transportation

    题意: 给出一个有N个节点的无向图和 M 条边,每条边都有一个重力承受度,要从中找出一条从 1 节点到 n节点的路径,使得可以经过的车辆载重最大. 分析: 类似于最大流中找增广路,在求最短路的松弛操作 ...

  9. Heavy Transportation(Dijkstra算法)

    题目: Hugo Heavy很高兴.在Cargolifter项目破裂后,他现在可以扩展业务.但他需要一个聪明的人告诉他,他的客户是否真的有办法将他的巨型钢制起重机建造到需要所有街道都能承受重量的地方. ...

最新文章

  1. golang的定时器NewTimer、NewTicker使用
  2. 概率统计笔记: 卡方分布(介绍)
  3. java form表单传参_表单Form传参数
  4. python编程实战(二):一文教你生成随机验证码!大小写字母与数字组合,位数可以控制
  5. Spring5-IOC底层原理
  6. eureka多了一个莫名其妙的服务_SpringCloud 服务注册与发现组件 Eureka
  7. vue表格刷新数据_Vue.js+Layer表格数据绑定与实现更新的实例
  8. dagger2的初次使用
  9. go 初学者 错误_初学者的颠簸之旅,发现了一些不错的错误
  10. 开源WinForms界面开发框架Management Studio 选项卡文档 插件 Office 2007蓝色风格 后台线程...
  11. pjproject编译方法与相关错误解决
  12. 远程控制 - 手机完全控制电脑之TeamViewer
  13. 哪些场景N1 mode是disable状态
  14. 使用servlet过滤器播放amr音频
  15. Linux编译之(1)C语言基础
  16. Python: DateFrame教程
  17. android ListView详解
  18. nvm环境安装和 node 的基本使用
  19. 重装office和关于office “很抱歉,遇到一些临时服务器问题。” 解决方法
  20. 笔记本电源就断网,不接电源正常

热门文章

  1. 共模电感磁芯材质你知道哪几种
  2. hd530黑苹果硬解_解决黑苹果HD3000核显 VGA和HDMI外接显示器无反应问题
  3. markdown中插入emoji表情方法总结,让你尽情使用表情符号
  4. Android Studio + Esp32Cam 实现手机APP实时传输监控视频
  5. Lambda表达式和Stream流
  6. iOS新方法systemFontOfSize: weight:
  7. Android studio 配置 jPBC 2.0.0
  8. Python爬虫学习笔记:概念、知识和简单应用
  9. 微信对话框删除后怎么找回聊天记录?
  10. 萌新问题合集:2.win10关于ftp保存了密码怎么取消?