题目链接: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;
}

POJ 1797 Heavy Transportation (Dijkstra)的更多相关文章

  1. POJ.1797 Heavy Transportation (Dijkstra变形)

    POJ.1797 Heavy Transportation (Dijkstra变形) 题意分析 给出n个点,m条边的城市网络,其中 x y d 代表由x到y(或由y到x)的公路所能承受的最大重量为d, ...

  2. POJ 1797 Heavy Transportation / SCU 1819 Heavy Transportation (图论,最短路径)

    POJ 1797 Heavy Transportation / SCU 1819 Heavy Transportation (图论,最短路径) Description Background Hugo ...

  3. poj 1797 Heavy Transportation(最大生成树)

    poj 1797 Heavy Transportation Description Background Hugo Heavy is happy. After the breakdown of the ...

  4. POJ 1797 Heavy Transportation

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

  5. POJ 1797 Heavy Transportation SPFA变形

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

  6. POJ 1797 Heavy Transportation (Dijkstra变形)

    F - Heavy Transportation Time Limit:3000MS     Memory Limit:30000KB     64bit IO Format:%I64d & ...

  7. POJ 1797 ——Heavy Transportation——————【最短路、Dijkstra、最短边最大化】

    Heavy Transportation Time Limit:3000MS     Memory Limit:30000KB     64bit IO Format:%I64d & %I64 ...

  8. POJ 1797 Heavy Transportation (dijkstra 最小边最大)

    Heavy Transportation 题目链接: http://acm.hust.edu.cn/vjudge/contest/66569#problem/A Description Backgro ...

  9. POJ 1797 Heavy Transportation (最大生成树)

    题目链接:POJ 1797 Description Background Hugo Heavy is happy. After the breakdown of the Cargolifter pro ...

随机推荐

  1. upc组队赛14 Communication【并查集+floyd /Tarjan】

    Communication 题目描述 The Ministry of Communication has an extremely wonderful message system, designed ...

  2. 刚安装的程序要卸载,如何Ubuntu查看程序安装记录

    如果新装一个程序,突然发现需要卸载,又忘记了程序名字,怎么解决呢? /var/log/apt/history.log /var/log/apt/term.log /var/log/aptitude 看 ...

  3. JVM运行时区域详解。

    我们知道的JVM内存区域有:堆和栈,这是一种泛的分法,也是按运行时区域的一种分法,堆是所有线程共享的一块区域,而栈是线程隔离的,每个线程互不共享. 线程不共享区域 每个线程的数据区域包括程序计数器.虚 ...

  4. JS面向对象——构造函数模型

    ECMAScript中的构造函数可用来创建特定类型的对象.我们可以创建自定义构造函数,从而定义对象类型的属性和方法,解决工厂模型中对象识别的问题. <!DOCTYPE html> < ...

  5. GitHub托管代码-学习笔记

    1.注册github账号 https://github.com/ 2.下载GitHub Desktop软件 https://desktop.github.com/ 在下载的软件上登陆GitHub账户 ...

  6. size - 列出段节大小和总共大小

    总览 (SYNOPSIS) size [-A|-B|--format=compatibility] [--help] [-d|-o|-x|--radix=number] [--target=bfdna ...

  7. 一、Nuget管理

    一.注册账号 http://www.nuget.org 可用微软账户登录注册 手机端授权 二.打包Nuget 1.新建一个.NET Standard 的类库项目(取名类库) 更改方法 2.选择项目属性 ...

  8. Codeforces 1198E Rectangle Painting 2 最小点覆盖(网络流)

    题意:有一个n * n的棋盘,每个棋盘有某些矩形区域被染成了黑色(这些矩形区域有可能相交),问把所有黑色区域染成白色的最小花费是多少?你每次可以选择把一个矩形区域染成白色,花费是染色的矩形区域长和宽的 ...

  9. WinForm解决UI假死

    运行WinForm程序时,如果后台执行比较费时的操作,前天UI就会假死卡住,很影响使用感受,这里我们简单的解决一下这个问题 using System; using System.Collections ...

  10. 数据库索引(BTree索引和Hash索引)

    索引 索引是为了方便查找我们所需要的数据. mysql支持的索引数据类型 B-Tree索引的特点 B-Tree索引以B+Tree(树)的结构存储数据. B-Tree索引能够加快数据的查询速度: B-T ...