题目链接:POJ 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 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 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.

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

Solution

题意

有 N 个城市,M 条道路,Hugo Heavy 要从城市 1 到城市 N 运输货物,每条道路都有它的最大载重量,求从城市 1 到城市 N 运送最多的重量是多少。

思路

Dijkstra

POJ 2253 Frogger 类似,修改一下 \(Dijkstra\) 的松弛方程:\(if\ d[v] < min(d[u], w[u][v])\ then\ d[v] = min(d[u], w[u][v])\)。注意 \(d\) 数组初始化成无穷大。

这题有点坑,输出两个换行。

此题还可以用最大生成树解决。戳这里

Code

#include <iostream>
#include <cstdio>
#include <queue>
#include <map>
#include <cmath>
#include <algorithm>
#include <cstring>
using namespace std;
const int N = 1010, M = 1e6 + 10;
const int inf = 0x3f3f3f3f;
typedef pair<int, int> P;
int n, m; struct Edge {
int to, w;
Edge(int to, int w): to(to), w(w) {}
};
vector<Edge> G[N];
int d[N], v[N]; void init() {
for(int i = 0; i < N; ++i) {
G[i].clear();
}
} void add(int x, int y, int z) {
G[x].push_back(Edge(y, z));
} void dijkstra(int s) {
// priority_queue<P,vector<P>,greater<P> > q;
priority_queue<P> q;
memset(d, 0, sizeof(d));
memset(v, 0, sizeof(v));
d[s] = inf;
q.push(P(inf, s));
while(q.size()) {
P p = q.top(); q.pop();
int x = p.second;
if(v[x]) continue;
v[x] = 1;
for(int i = 0; i < G[x].size(); ++i) {
Edge e = G[x][i];
if (d[e.to] < min(d[x], e.w)) {
d[e.to] = min(d[x], e.w);
q.push(P(d[e.to],e.to));
}
}
}
} int main() {
int T;
scanf("%d", &T);
int kase = 0;
while(T--) {
init();
scanf("%d%d", &n, &m);
for(int i = 0; i < m; ++i) {
int x, y, z;
scanf("%d%d%d", &x, & y, &z);
add(x, y, z);
add(y, x, z);
}
dijkstra(1);
if(kase) printf("\n");
printf("Scenario #%d:\n", ++kase);
printf("%d\n", d[n]);
}
return 0;
}

最新文章

  1. [转]runtime 消息机制
  2. cherrypy应用探究
  3. scrapy-1.2.1安装失败之解决方法
  4. .Net Framework中的标准委托和事件_1
  5. Ubuntu 14 安装并破解SSH工具 SecureCRT
  6. 【Qt】学习笔记(一)
  7. flex 右键连接
  8. keynotes egestas,PPT 渐变背景下载-imsoft.cnblogs
  9. 信頼済みサイト对window.open窗体大小影响原因之一
  10. C#(结构体_枚举类型)
  11. Windows Phone 版 Cocos2d-x 程序的结构
  12. 转:[Android问答] 开发环境问题集锦
  13. CSS使用简介
  14. Go基础之--操作Mysql(一)
  15. 解决mac上每次升级nodejs都要重新安装扩展包的问题
  16. Android单个控件占父控件宽度一半且水平居中
  17. Git 将代码回到指定版本
  18. 集合的最大缺点是无法进行类型判定(这个缺点在JAVA1.5中已经解决),这样就可能出现因为类型不同而出现类型错误。
  19. sql查询练习
  20. html标签积累

热门文章

  1. Python笔记(八)_内部函数与闭包
  2. 12. Jmeter-断言
  3. Ascii Chart
  4. js中获取input中所输入的值
  5. HDU 6470 /// 矩阵快速幂
  6. Codeforces Fix a Tree
  7. 更改mysql最大连接数
  8. 某个应用的CPU使用率居然达到100%,我该怎么做?(三)
  9. CentOS 7 virtualenv创建python3与python2的环境&amp;&amp;运行项目
  10. 1.Configuration