【HDOJ】1385 Minimum Transport Cost
Floyd。注意字典序!!!
#include <stdio.h>
#include <string.h> #define MAXNUM 55
#define INF 0x1fffffff int cost[MAXNUM][MAXNUM];
int path[MAXNUM][MAXNUM];
int taxes[MAXNUM];
int que[MAXNUM];
int n; void floyd(int n) {
int i, j, k, tmp; for (i=; i<=n; ++i)
for (j=; j<=n; ++j)
path[i][j] = j; for (k=; k<=n; ++k) {
for (i=; i<=n; ++i) {
for (j=; j<=n; ++j) {
tmp = cost[i][k]+cost[k][j]+taxes[k];
if (cost[i][j] > tmp) {
cost[i][j] = tmp;
path[i][j] = path[i][k];
} else if (cost[i][j] == tmp) {
if (path[i][j] > path[i][k])
path[i][j] = path[i][k];
}
}
}
}
} void output(int a, int b) {
int front, rear;
int x = a;
front = rear = ; //que[rear++] = a;
while (path[x][b] != b) {
que[rear++] = path[x][b];
x = path[x][b];
}
if (a != b)
que[rear++] = b; printf("From %d to %d :\n", a, b);
printf("Path: %d", a);
while (front < rear)
printf("-->%d", que[front++]);
printf("\nTotal cost : %d\n\n", cost[a][b]);
} int main() {
int a, b;
int i, j; while (scanf("%d", &n)!=EOF && n) {
for (i=; i<=n; ++i)
for (j=; j<=n; ++j) {
scanf("%d", &cost[i][j]);
if (cost[i][j] < )
cost[i][j] = INF;
}
for (i=; i<=n; ++i)
scanf("%d", &taxes[i]);
floyd(n);
while () {
scanf("%d %d", &a, &b);
if (a==- && b==-)
break;
output(a, b);
}
} return ;
}
【HDOJ】1385 Minimum Transport Cost的更多相关文章
- HDU 1385 Minimum Transport Cost (Dijstra 最短路)
Minimum Transport Cost http://acm.hdu.edu.cn/showproblem.php?pid=1385 Problem Description These are ...
- hdu 1385 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 ...
- HDU 1385 Minimum Transport Cost (输出字典序最小路径)【最短路】
<题目链接> 题目大意:给你一张图,有n个点,每个点都有需要缴的税,两个直接相连点之间的道路也有需要花费的费用.现在进行多次询问,给定起点和终点,输出给定起点和终点之间最少花费是多少,并且 ...
- hdu 1385 Minimum Transport Cost (floyd算法)
貌似···················· 这个算法深的东西还是很不熟悉!继续学习!!!! ++++++++++++++++++++++++++++ ======================== ...
- hdu 1385 Minimum Transport Cost
http://acm.hdu.edu.cn/showproblem.php?pid=1385 #include <cstdio> #include <cstring> #inc ...
- HDU 1385 Minimum Transport Cost (最短路,并输出路径)
题意:给你n个城市,一些城市之间会有一些道路,有边权.并且每个城市都会有一些费用. 然后你一些起点和终点,问你从起点到终点最少需要多少路途. 除了起点和终点,最短路的图中的每个城市的费用都要加上. 思 ...
- 【HDOJ】3473 Minimum Sum
划分树解.主席树解MLE. /* 3473 */ #include <iostream> #include <sstream> #include <string> ...
- HDU 1385 Minimum Transport Cost 最短路径题解
本题就是使用Floyd算法求全部路径的最短路径,并且须要保存路径,并且更进一步须要依照字典顺序输出结果. 还是有一定难度的. Floyd有一种非常巧妙的记录数据的方法,大多都是使用这种方法记录数据的. ...
随机推荐
- Debian 8 编译安装nginx 1.8
1.安装编译环境 apt-get install build-essential apt-get install gcc make apt-get install libpcre+* apt-get ...
- 百度地图BMap API实例
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/stri ...
- webservice未能加载文件或程序集“**.DLL”或它的某一个依赖项。
方法1.C:\Windows\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files先删除这个下面所有的文件,然后把bin里面的引用的dl ...
- Visual Studio小技巧
换了台电脑后打开解决方案后所有项目都是展开状态,每天工作的第一件事情就是把他们都折起来,感觉好麻烦. 百度了一阵子没找到相关的问题,还一度怀疑是不是我自己的VS有问题. 但是其它解决方案没有这种情况, ...
- Ubuntu安装gevent
今天在安装包的过程中,按照网上的文章,出错,找了很久,最后才安装成功,希望能解决以后大家遇到的问题 Ubuntu安装gevent Gevent是一个基于greenlet的Python的并发框架,以赖于 ...
- JavaScript+DOM编程艺术【读书笔记】
第四章笔记: 如何让一个a标签不跳转: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www. ...
- angularJs ionic phoneGap 分享
由于坑较多 就如“天下难事,必作于易吧” 最近有机会接触到了git node angularJs ionic phoneGap 很开森也很痛苦 分享如下 推荐的几个博客地址: ionic开发插件之n ...
- javascript类继承系列一
js中没有提供类(class,抽象类,接口等高级的抽象),可以用new,但new的function的对象,构造器 但在js中可以通过function来模拟类的一些特性function fun_name ...
- Java的jLinqer包介绍
1.介绍 熟悉C#的lambda 表达式,想要使用 LINQ 在 Java,是个问题,虽然 Java8用函数式接口已经实现了部分lambda 表达式,但是还是不够灵活. 2.Linqer简介 Linq ...
- 应用程序中小红点设置方法 (ios)
我们的手机上常常会看到软件的右上角出现小红点,上面显示着你未读的消息数.下面是设置小红点的方法. 1.tabBar上按钮的小红点 因为小红点代表你未读的消息数,所以这个小红点上的数据不是凭空 ...