BNU 20950 ——沉重的货物 —————— · 最短路、最短边最大化」
沉重的货物
64-bit integer IO format: %lld Java class name: Main
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
#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 ——沉重的货物 —————— · 最短路、最短边最大化」的更多相关文章
- POJ 1797 ——Heavy Transportation——————【最短路、Dijkstra、最短边最大化】
Heavy Transportation Time Limit:3000MS Memory Limit:30000KB 64bit IO Format:%I64d & %I64 ...
- BNU 26480 Horror List【最短路】
链接: http://www.bnuoj.com/bnuoj/problem_show.php?pid=26480 http://www.bnuoj.com/bnuoj/contest_show.ph ...
- 广搜最短路(最短时间到达目的地),POJ(3669)
题目链接:http://poj.org/problem?id=3669 解题报告: 1.流星坠落的点,四周和自己本身都被毁灭,不断更新每个点被毁灭的时候的最短时间. 2.搜索终点是,到达某个点,这个不 ...
- 图论杂项细节梳理&模板(虚树,圆方树,仙人掌,欧拉路径,还有。。。)
orzYCB 虚树 %自为风月马前卒巨佬% 用于优化一类树形DP问题. 当状态转移只和树中的某些关键点有关的时候,我们把这些点和它们两两之间的LCA弄出来,以点的祖孙关系连成一棵新的树,这就是虚树. ...
- 遁入NOIP记
回归noip啦 给自己定个小目标 500分起步 在这里列一下需要搞的东西OvO 1.算法基础 模拟 贪心 二分 分治 2.搜索 / 记忆化搜索 剪枝 对抗搜索 3.dp 状压 组合数学 树D 单队 D ...
- suseoj 1212: 推箱子问题(bfs)
1212: 推箱子问题 时间限制: 1 Sec 内存限制: 128 MB提交: 60 解决: 13[提交][状态][讨论版][命题人:liyuansong] 题目描述 码头仓库是划分为n×m个格子 ...
- 长乐培训Day6
T1 数列 题目 [题目描述] [输入格式] [输出格式] [输入样例] [输出样例] [数据规模] 如上所述. 解析 身为T1,居然比T4还难......让我怎么办......以下为巨佬题解: 我猜 ...
- 图论之tarjan真乃神人也,强连通分量,割点,桥,双连通他都会
先来%一下Robert Tarjan前辈 %%%%%%%%%%%%%%%%%% 然后是热情感谢下列并不止这些大佬的博客: 图连通性(一):Tarjan算法求解有向图强连通分量 图连通性(二):Tarj ...
- DP刷题记录(持续更新)
DP刷题记录 (本文例题目前大多数都选自算法竞赛进阶指南) TYVJ1071 求两个序列的最长公共上升子序列 设\(f_{i,j}\)表示a中的\(1-i\)与b中色\(1-j\)匹配时所能构成的以\ ...
随机推荐
- c# 读取txt文档和写入文档的方法
StreamReader sr = new StreamReader(path); //path是要读取的文件的完整路径 String str_read = sr.ReadToEnd(); //从开始 ...
- LOJ#10065. 「一本通 3.1 例 2」北极通讯网络
题目链接:https://loj.ac/problem/10065 题目描述 原题来自:Waterloo University 2002 北极的某区域共有 nnn 座村庄,每座村庄的坐标用一对整数 ( ...
- 多线程《七》信号量,Event,定时器
一 信号量 信号量也是一把锁,可以指定信号量为5,对比互斥锁同一时间只能有一个任务抢到锁去执行,信号量同一时间可以有5个任务拿到锁去执行,如果说互斥锁是合租房屋的人去抢一个厕所,那么信号量就相当于一群 ...
- 题解 P1720 【月落乌啼算钱】
题目链接 定义一个函数比较好求. #include<bits/stdc++.h>//万能头文件 using namespace std; double F(int x)//定义函数,为了保 ...
- Java面向对象之USB接口实例
一.需求: 1.在电脑上设置一个USB接口. 2.电脑运行时,将鼠标连接到接口上,鼠标可以使用自己的功能. 3.电脑运行时,将键盘连接到接口上,键盘可以使用自己的功能.(使用接口的作用:减低鼠标.键盘 ...
- 微信支付的SDK曝出重大漏洞(XXE漏洞)
一.背景 昨天(2018-07-04)微信支付的SDK曝出重大漏洞(XXE漏洞),通过该漏洞,攻击者可以获取服务器中目录结构.文件内容,如代码.各种私钥等.获取这些信息以后,攻击者便可以为所欲为,其中 ...
- 前端模块开发的基础代码,兼容amd,cmd标准,也可以直接使用window来引用对象
(function(global, factory) { if (typeof define === 'function' && define.amd) { define(functi ...
- 使用window.name 进行数据跨域传递
其中要点, Stpe1,浏览器在Iframe中加载一个异域的页面,这个页面返回 <script>window.name="任何数据"</script>,这时 ...
- 关于 SimpleMembership 中 CreateDate 的问题
使用 WebMatrix.WebData.WebSecurity.CreateUserAndAccount(model.UserName, model.Password, ...
- Cheerleaders UVA - 11806 计数问题
In most professional sporting events, cheerleaders play a major role in entertaining the spectators. ...