最短路变形 poj3615&
问题:
牛要跨过一些障碍,希望以最小的体力跨过障碍,并且对于一条路径,只在乎其中最高的障碍。
输入N代表站点数,标记为1—N,输入M代表路径数,从站点S到E之间需要跨过高度为H的障碍。
输入T代表牛要完成的任务数。对于每个任务,输入A,B,输出一条从站点A到B的路径,使需要跨过的最高障碍为最低。
代码:(Floyd
/*******************************************
Problem: 3615 User:
Memory: 960K Time: 688MS
Language: G++ Result: Accepted
********************************************/
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std; const int INF = 0x3f3f3f3f;
const int N = 305; int mp[N][N];
int dis[N], vis[N]; void floyd(int n)
{
int i, j, k;
for (k = 1; k <= n; ++k)
for (i = 1; i <= n; ++i)
for (j = 1; j <= n; ++j)
if (mp[i][j] > max(mp[i][k] , mp[k][j]))
mp[i][j] = max(mp[i][k], mp[k][j]);
} int main()
{
int n, m, t;
while (scanf("%d%d%d", &n, &m, &t) != EOF) {
int i, j;
int a, b, h;
for (i = 1; i <= n; ++i)
for (j = 1; j <= n; ++j)
mp[i][j] = INF;
for (i = 0; i < m; ++i) {
scanf("%d%d%d", &a, &b, &h);
mp[a][b] = h;
}
floyd(n);
for (i = 0; i < t; ++i) {
scanf("%d%d", &a, &b);
printf("%d\n", mp[a][b] == INF ? -1 : mp[a][b]);
}
}
return 0;
}
poj2263
和上题相似,求两点之间最小值最大的路径
代码:(dijkstra
/******************************************
Problem: 2263 User:
Memory: 812K Time: 125MS
Language: G++ Result: Accepted
*******************************************/
#include <iostream>
#include <cstring>
#include <string>
#include <map>
#include <algorithm>
#include <cstdio>
using namespace std; const int N = 205;
const int INF = 0x3f3f3f3f; int mp[N][N];
int vis[N], dis[N];
map<string, int>my_map; int dijkstra(int n, int s, int e)
{
int i, j;
memset(vis, 0, sizeof(vis));
for (i = 1; i <= n; ++i)
dis[i] = mp[s][i];
vis[s] = 1;
for (i = 0; i < n; ++i) {
int max_dis = 0;
int max_x = 1;
for (j = 1; j <= n; ++j) {
if (!vis[j] && dis[j] > max_dis) {
max_dis = dis[j];
max_x = j;
}
}
if (max_x == e) return max_dis;
vis[max_x] = 1;
for (j = 1; j <= n; ++j) {
if (!vis[j] && dis[j] < min(dis[max_x], mp[j][max_x]))
dis[j] = min(dis[max_x], mp[j][max_x]);
}
}
return 0;
} int main()
{
int n, m;
int times = 1;
while (scanf("%d%d", &n, &m) != EOF) {
if (n == 0 && m == 0) break;
int i, j;
my_map.clear();
int cnt = 1;
string stra, strb;
int x, y;
int weight;
for (i = 1; i <= n; ++i)
for (j = 1; j <= n; ++j)
mp[i][j] = 0; for (i = 0; i < m; ++i) {
cin >> stra >> strb >> weight;
if (my_map[stra] == 0) my_map[stra] = cnt++;
if (my_map[strb] == 0) my_map[strb] = cnt++;
x = my_map[stra];
y = my_map[strb];
if (mp[x][y] < weight)
mp[y][x] = mp[x][y] = weight;
}
cin >> stra >> strb;
x = my_map[stra];
y = my_map[strb];
printf("Scenario #%d\n%d tons\n\n", times++, dijkstra(n, x, y)); }
return 0;
}
最短路变形 poj3615&的更多相关文章
- 对短路变形POJ3615
Farmer John wants the cows to prepare for the county jumping competition, so Bessie and the gang are ...
- 最短路变形 poj3615& poj2263
问题: 牛要跨过一些障碍,希望以最小的体力跨过障碍,并且对于一条路径,只在乎其中最高的障碍. 输入N代表站点数,标记为1—N,输入M代表路径数,从站点S到E之间需要跨过高度为H的障碍. 输入T代表牛要 ...
- POJ-2253.Frogger.(求每条路径中最大值的最小值,最短路变形)
做到了这个题,感觉网上的博客是真的水,只有kuangbin大神一句话就点醒了我,所以我写这篇博客是为了让最短路的入门者尽快脱坑...... 本题思路:本题是最短路的变形,要求出最短路中的最大跳跃距离, ...
- POJ 3635 - Full Tank? - [最短路变形][手写二叉堆优化Dijkstra][配对堆优化Dijkstra]
题目链接:http://poj.org/problem?id=3635 题意题解等均参考:POJ 3635 - Full Tank? - [最短路变形][优先队列优化Dijkstra]. 一些口胡: ...
- POJ 3635 - Full Tank? - [最短路变形][优先队列优化Dijkstra]
题目链接:http://poj.org/problem?id=3635 Description After going through the receipts from your car trip ...
- POJ-1797Heavy Transportation,最短路变形,用dijkstra稍加修改就可以了;
Heavy Transportation Time Limit: 3000MS Memory Limit: 30000K Description Background Hugo ...
- HDOJ find the safest road 1596【最短路变形】
find the safest road Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Ot ...
- HN0I2000最优乘车 (最短路变形)
HN0I2000最优乘车 (最短路变形) 版权声明:本篇随笔版权归作者YJSheep(www.cnblogs.com/yangyaojia)所有,转载请保留原地址! [试题]为了简化城市公共汽车收费系 ...
- 天梯杯 PAT L2-001. 紧急救援 最短路变形
作为一个城市的应急救援队伍的负责人,你有一张特殊的全国地图.在地图上显示有多个分散的城市和一些连接城市的快速道路.每个城市的救援队数量和每一条连接两个城市的快速道路长度都标在地图上.当其他城市有紧急求 ...
随机推荐
- Hive优化(转)
一.join优化 Join查找操作的基本原则:应该将条目少的表/子查询放在 Join 操作符的左边.原因是在 Join 操作的 Reduce 阶段,位于 Join 操作符左边的表的内容会被加载进内存, ...
- Mac操作系统常用快捷键
复制:cmd+c 粘贴:cmd+v 剪切:先cmd+c,再cmd+opt+v 显示桌面:cmd+F3 切换输入法:cmd+space 打开Spotlight:ctrl+s ...
- App新版本提醒
童鞋们是否遇过在使用app的时候出现有新版本更新跳转到苹果商店的提示呢? github中有一个三方框架 Harpy 完美实现了这一功能! demo时刻 我的github - Harpy
- UICountingLabel实现数字变化的动画效果-b
在大多数金融类 app 上或者其他 app 需要数字展示的地方, 经常会有如下的动画效果: 动画效果 怎么做呢? 一.下载UICountingLabel 下载地址: https://github.co ...
- oracle删除表的方法
1. 删除oracle表中的所有数据而不删除表: 语法: TRUNCATE TABLE table_name; 使用这条语句只是删除表中的全部数据,不是删除表,这种方式也叫做截断表,这种方式比使用de ...
- 国内静态文件CDN服务介绍 国内js公共库
国内静态文件CDN服务介绍 新浪SAE 介绍页 文件页 百度云 介绍页 七牛云存储介绍页 优势,可以提交没有的库,支持https,但证书不可信. 又拍云 介绍页 建议使用阿里云OSS自己上传所需文件 ...
- Arrays.sort 与 Collections.sort
代码如下: package com.wangzhu.arrays; import java.util.Arrays; import java.util.Collections; public clas ...
- 解析rss和atom文件出现乱码问题
try { String xmlString = new String(response.data, Charset.forName("UTF-8")); XmlPullParse ...
- Cocos2d-x CCEditBox & CCTextFieldTTF
下面简单记录一下如何Cocos2d-x中创建输入编辑框.在引擎中为我们提供了这样两个类:CCEditBox 和 CCTextFieldTTF. 一.CCEditBox ①这个类文件的位置 ②这个类 ...
- bzoj1084
乍一看这题好难,根本不会: 直到看到1<=m<=2…… 显然分类讨论dp, 很快想到这题的dp和poj2430相类似 m=2的时候f[i,j,k]表示到第i行用了j个矩阵结尾状态为k时最大 ...