沉重的货物

Time Limit: 1000ms
Memory Limit: 65536KB

64-bit integer IO format: %lld      Java class name: Main

Type:

 

CUITCPC是一个专门生产大型货运火车的工厂。他们的新型货运火车XX V1.0,是如此之大,以至于可以运输的货物的重量并不取决于那个火车本身,而只是受限于你所通过的铁路的承重。

给你出发和目标城市,你的任务就是求出火车从初始城市到目标城市的最大载重。

Input

输入可能包括一组或者多组测试数据。每一个测试数据的前两行是两个整数:城市的数量n(2<=n<=1000)和铁路的条数r(1<=r<= 19900)。

紧接着是r行,每一行描述一条连接两个城市的铁路以及这段铁路所能承受的最大重量。城市名不会超过30个字符,也不会有空白字符出现在城市名中。承重是一个0-10000的整数。铁路都是双向的。

最后一行是两个城市的名字:初始城市和目标城市。

输入的结束条件是n和r都为0

Output

对于每一组测试数据

输出包括3行:

l  一行输出"Scenario #x",其中x是测试数据的组数

l  一行输出"y tons",其中y表示最大载重量

l  一个空行

Sample Input

4 3
ACM ICPC 100
ICPC World 80
World CPC 120
ACM CPC
5 5
ACM ICPC 100
ICPC World 80
World CPC 120
ACM Chengdu 220
Chengdu CPC 170
CPC ACM
0 0

Sample Output

Scenario #1
80 tons Scenario #2
170 tons

Source

 
 
解题思路:将d[i]表示成从原点到i点所有路径中最短边的最大值 。只需要改变dijstra中的判断条件改一下,初始化改一下就行了。
 
#include<stdio.h>
#include<algorithm>
#include<string.h>
#include<math.h>
#include<string>
#include<iostream>
#include<queue>
#include<stack>
#include<map>
#include<vector>
#include<set>
using namespace std;
typedef long long LL;
#define mid (L+R)/2
#define lson rt*2,L,mid
#define rson rt*2+1,mid+1,R
const int maxn = 1e3 + 300;
const LL INF = 0x3f3f3f3f;
map<string,int>mp;
struct Node{
int d;
int u;
Node(){}
Node(int _d,int _u):d(_d),u(_u){}
bool operator < (const Node & rhs)const{
return d < rhs.d;
}
};
priority_queue<Node>PQ;
struct Edge{
int from, to, next, dist;
Edge(){}
Edge(int _from,int _to,int _next,int _dist):from(_from),to(_to),next(_next),dist(_dist){}
}edges[maxn*100];
int tot, head[maxn];
void init(){
tot = 0;
memset(head,-1,sizeof(head));
}
void addedge(int u,int v,int d){
edges[tot] = Edge(u,v,head[u],d);
head[u] = tot++;
}
int st, en, n;
int d[maxn], vis[maxn];
void Dijstra(){
for(int i = 1; i <= n; i++){
d[i] = 0;
}
memset(vis,0,sizeof(vis));
d[st] = INF;
while(!PQ.empty()){
Node x = PQ.top();
PQ.pop();
int u = x.u;
if(vis[u]) continue;
vis[u] = 1;
for(int i = head[u]; i != -1; i = edges[i].next){
Edge &e = edges[i];
if(!vis[e.to] && d[e.to] < min(d[e.from], e.dist)){
d[e.to] = min(d[e.from], e.dist);
PQ.push(Node(d[e.to],e.to));
}
}
}
}
int main(){
string s1,s2;
int m, dis, T = 0;
while(scanf("%d%d",&n,&m)!=EOF&& n&&m){
int nn = 0;
init();
mp.clear();
// mp.erase(mp.begin(),mp.end());
for(int i = 1; i <= m; i++){
cin>>s1>>s2;
cin>>dis;
if(mp.count(s1) == 0){
mp[s1] = ++nn;
}
if(mp.count(s2) == 0){
mp[s2] = ++nn;
}
addedge(mp[s1],mp[s2],dis);
addedge(mp[s2],mp[s1],dis);
}
cin>>s1 >> s2;
st = mp[s1]; en = mp[s2];
PQ.push(Node(INF,st));
Dijstra();
cout<<"Scenario #"<<++T<<endl;
cout<<d[en] <<" tons"<<endl<<endl;
}
return 0;
}

BNU 20950 ——沉重的货物 —————— · 最短路、最短边最大化」的更多相关文章

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

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

  2. BNU 26480 Horror List【最短路】

    链接: http://www.bnuoj.com/bnuoj/problem_show.php?pid=26480 http://www.bnuoj.com/bnuoj/contest_show.ph ...

  3. 广搜最短路(最短时间到达目的地),POJ(3669)

    题目链接:http://poj.org/problem?id=3669 解题报告: 1.流星坠落的点,四周和自己本身都被毁灭,不断更新每个点被毁灭的时候的最短时间. 2.搜索终点是,到达某个点,这个不 ...

  4. 图论杂项细节梳理&模板(虚树,圆方树,仙人掌,欧拉路径,还有。。。)

    orzYCB 虚树 %自为风月马前卒巨佬% 用于优化一类树形DP问题. 当状态转移只和树中的某些关键点有关的时候,我们把这些点和它们两两之间的LCA弄出来,以点的祖孙关系连成一棵新的树,这就是虚树. ...

  5. 遁入NOIP记

    回归noip啦 给自己定个小目标 500分起步 在这里列一下需要搞的东西OvO 1.算法基础 模拟 贪心 二分 分治 2.搜索 / 记忆化搜索 剪枝 对抗搜索 3.dp 状压 组合数学 树D 单队 D ...

  6. suseoj 1212: 推箱子问题(bfs)

    1212: 推箱子问题 时间限制: 1 Sec  内存限制: 128 MB提交: 60  解决: 13[提交][状态][讨论版][命题人:liyuansong] 题目描述 码头仓库是划分为n×m个格子 ...

  7. 长乐培训Day6

    T1 数列 题目 [题目描述] [输入格式] [输出格式] [输入样例] [输出样例] [数据规模] 如上所述. 解析 身为T1,居然比T4还难......让我怎么办......以下为巨佬题解: 我猜 ...

  8. 图论之tarjan真乃神人也,强连通分量,割点,桥,双连通他都会

    先来%一下Robert Tarjan前辈 %%%%%%%%%%%%%%%%%% 然后是热情感谢下列并不止这些大佬的博客: 图连通性(一):Tarjan算法求解有向图强连通分量 图连通性(二):Tarj ...

  9. DP刷题记录(持续更新)

    DP刷题记录 (本文例题目前大多数都选自算法竞赛进阶指南) TYVJ1071 求两个序列的最长公共上升子序列 设\(f_{i,j}\)表示a中的\(1-i\)与b中色\(1-j\)匹配时所能构成的以\ ...

随机推荐

  1. Task ContinueWith

    前正无生意,且记Task.ContinueWith之用法. using System; using System.Collections.Generic; using System.Diagnosti ...

  2. 【kudu pk parquet】runtime filter实践

    已经有好一阵子没有写博文了,今天给大家带来一篇最近一段时间开发相关的文章:在impala和kudu上支持runtime filter. 大家搜索下实践者社区,可以发现前面已经有好几位同学写了这个主题的 ...

  3. 最小生成树(kruscal算法)

    其实kruscal算法很简单,把边从小到大排一遍,如果加入此边形成环,就不加,知道这棵树有n-1条边. 代码如下(一定要理解): #include<iostream> #include&l ...

  4. Java面向对象之关键字static 入门实例

    一.基础概念 静态关键字 static 是成员修饰符,直接用于修饰成员. (一)特点: 1.被静态修饰的成果,可以直接被类名所调用. 2.静态成员优先于对象存在. 3.静态成员随着类的加载而加载.随着 ...

  5. ORA-03113 : end-of-file on communication channel

    现象一: 数据库startup时,出现数据库无法正常mount,并报ORA-03113错误. SQL> startup ORACLE instance started. Total System ...

  6. 如何删除/mnt/cdrom?|如何删除只读文件系统(Read-only files ystem)? failed !bh ? 挂载光盘?挂载usb?

    root权限下 : 首先用umount /mnt/文件夹 卸载文件系统,必要时可以用umount -f(可能丢失数据)然后rm -rf /mnt/cdrom mkdir /mnt/cdrom moun ...

  7. bit、Byte、bps、Bps、pps、Gbps的单位的说明及换算

    一.bit与Byte区别 1. bit(比特) 是电脑记忆体的最小单元,在二进制计算机中,每一比特代表0或1的数位信号. 2. Byte(单位字节) 一般表示存储介质大小的单位,数字.字母和特殊符号占 ...

  8. SDUT OJ 数据结构实验之图论十:判断给定图是否存在合法拓扑序列

    数据结构实验之图论十:判断给定图是否存在合法拓扑序列 Time Limit: 1000 ms Memory Limit: 65536 KiB Submit Statistic Discuss Prob ...

  9. [Beta阶段]第一次Scrum Meeting

    Scrum Meeting博客目录 [Beta阶段]第一次Scrum Meeting 基本信息 名称 时间 地点 时长 第一次Scrum Meeting 19/04/29 大运村寝室6楼 70min ...

  10. prcharm 注册码

    JetBrains全系列在线激活中心 使用方法: 1. 点击Help,选择Register.打开注册页面. 2. 选择License server, 在License server address 中 ...