ZOJ-1456 Minimum Transport Cost---Floyd变形+路径输出字典序最小
题目链接:
https://vjudge.net/problem/ZOJ-1456
题目大意:
Spring国家有N个城市,每队城市之间也许有运输路线,也可能没有。现在有一些货物要从一个城市运到另一个城市。运输费有两部分组成:
城市之间的运输成本,路过一个城市的税,除了起点和终点城市。多条路要求字典序最小
思路:
此处运用Floyd的思想,由于每经过一个城市需要交纳费用,所以在加入城市k的时候判断d[i][j]和d[i][k]+d[k][j]+w[k]的大小,此处需要防止i和j等于k的情况。字典序最小存路径就不能按照原来的方法倒叙存储路径,此处的path[i][j]存储的是点i到达点j的最短路径上点i后面的点。初始化的时候如果点a和点b之间存在路径,那么path[a][b] = b,每次加入中间点k时,如果可以更新最短路,path[i][j]应该等于path[i][k],因为存的是i到j的最短路径上i点后面的那个点的值,如果k点加入可以更新最短路,那么从i到j的路径上i点后面的点应该变成从i到k的路径上i点后面的点的值。
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<queue>
#include<stack>
#include<map>
#include<set>
#include<sstream>
using namespace std;
typedef long long ll;
const int maxn = 1e2 + ;
const int INF = 1e9 + ;
int T, n, m, cases;
int Map[maxn][maxn];
int path[maxn][maxn];//path[i][j]存从i点出发到j带你的路径上,i点的后一个点
int w[maxn];
int main()
{
while(cin >> n && n)
{
memset(path, -, sizeof(path));
for(int i = ; i <= n; i++)
{
for(int j = ; j <= n; j++)
{
cin >> Map[i][j];
if(Map[i][j] < )Map[i][j] = INF;
else if(i != j)path[i][j] = j;
}
}
for(int i = ; i <= n; i++)
{
cin >> w[i];
}
for(int k = ; k <= n; k++)
{
for(int i = ; i <= n; i++)
{
for(int j = ; j <= n; j++)
{
if(i == k || j == k)continue;
if(Map[i][j] > Map[i][k] + w[k] + Map[k][j])
{
Map[i][j] = Map[i][k] + Map[k][j] + w[k];
path[i][j] = path[i][k];
}
else if(Map[i][j] == Map[i][k] + Map[k][j] + w[k] && path[i][j] != - && path[i][k] != -)
{
path[i][j] = min(path[i][j], path[i][k]);
}
}
}
}
int u, v;
while(cin >> u >> v && (u + v > ))
{
printf("From %d to %d :\n", u, v);
int x = u;
printf("Path: %d", x);
while(x != v)
{
printf("-->%d", path[x][v]);
x = path[x][v];
}
puts("");
printf("Total cost : %d\n\n", Map[u][v]);
}
}
return ;
}
ZOJ-1456 Minimum Transport Cost---Floyd变形+路径输出字典序最小的更多相关文章
- ZOJ 1456 Minimum Transport Cost(floyd+后继路径记录)
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=1456 题意:求最短路并且输出字典序最小的答案. 思路:如果用dijkstr ...
- ZOJ 1456 Minimum Transport Cost(Floyd算法求解最短路径并输出最小字典序路径)
题目链接: https://vjudge.net/problem/ZOJ-1456 These are N cities in Spring country. Between each pair of ...
- Minimum Transport Cost(floyd+二维数组记录路径)
Minimum Transport Cost Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/O ...
- hdu 1385 Minimum Transport Cost (Floyd)
Minimum Transport CostTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Ot ...
- Minimum Transport Cost Floyd 输出最短路
These are N cities in Spring country. Between each pair of cities there may be one transportation tr ...
- hdu 1385 Minimum Transport Cost(floyd && 记录路径)
Minimum Transport Cost Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/O ...
- 【floyd存字典序路径】【HDU1385】【Minimum Transport Cost】
题目大意 求多组i到j的最短路径 并输出字典序最小.... 现在只会floyd的方式 利用dis[i][j] 表示i到j的路径中i 后面的节点 更新是比较dis[i][j] dis[i][k]. 记住 ...
- HDU1385 Minimum Transport Cost (Floyd)
Minimum Transport Cost Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/O ...
- hdu1385 Minimum Transport Cost 字典序最小的最短路径 Floyd
求最短路的算法最有名的是Dijkstra.所以一般拿到题目第一反应就是使用Dijkstra算法.但是此题要求的好几对起点和终点的最短路径.所以用Floyd是最好的选择.因为其他三种最短路的算法都是单源 ...
随机推荐
- 面向对象写的简单的colors rain
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> < ...
- 第八届蓝桥杯省赛17【java B组】第一题
1,标题: 购物单 小明刚刚找到工作,老板人很好,只是老板夫人很爱购物.老板忙的时候经常让小明帮忙到商场代为购物.小明很厌烦,但又不好推辞. 这不,XX大促销又来了!老板夫人开出了长长的购 ...
- Acer Aspire E1 471G 加装SSD+机械盘后无法启动的问题
老笔记本 Acer Aspire E1 471G 加装了一块 SSD 作为系统盘(win10),原机械盘格式化后,装在光驱托架上作为数据盘. 可能会出现: 系统无法启动,显示找不到启动设备,并且在F2 ...
- MYSQL数据库学习六 索引的操作
6.1 索引 由于数据存储在数据库表中,所以索引是创建在数据库表对象上的,由表中的一个或多个字段生成的键组成,这些键存储在数据结构(B-树或哈希表)中,通过索引可以快速有效地查找与键值相关联的字段.根 ...
- elementUI-事件绑定Bug
刚开始使用elementUI的,慢慢的摸索.今天在绑定click事件的时候,在给el-某标签绑定.然后事件失效了.我就很纳闷,这怎么可能失效呢,当我给它的自己元素嵌套了一层div的时候,仍可是使用所以 ...
- 设计模式 --> (7)外观模式
外观模式 外观模式为子系统中的一组接口提供一个一致的界面, 外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用. 适用性 1.为一个复杂子系统提供一个简单接口. 2.提高子系统的独立性. ...
- redis存取对象
redis主要存储类型最常用的五种数据类型: String Hash List Set Sorted set redis不能直接存取对象,如何解决呢? 两种方式 1.利用序列化和反序列化的方式 两层对 ...
- GLSL Versions和GLSL ES Versions 对比
You can use the #version command as the first line of your shader to specify GLSL version: #version ...
- jquery empty()方法在IE下报错的解决办法
empty()在IE中没反应的办法: 用原生的js解决: try { $("#id" ).empty(); } catch (e) { $("#id")[0]. ...
- Software Engineering-HW8 个人总结
Software Engineering-HW8 个人总结 2017282110264 李世钰 一.请参考第一次作业,当初你对课程的承诺和期望都兑现了吗? 大致实现了.经过了最后的团队项目,基本了解一 ...