HDU 1385 Minimum Transport Cost(Floyd+打印字典序最小路径)
来源:互联网 发布:豆瓣读书软件 编辑:程序博客网 时间:2024/05/12 01:39
题意:
给一个无向图,求出两点间的最短距离(这里还要加上每个地点花费cost[i]),并输出路径。
分析:
floyd算法,输出字典序最小路径(lexically smallest )
注意下特殊情况,到自身情况输出的格式!
AC代码:
#include<iostream>#include<cstdio>#include<algorithm>#define INF 0x3f3f3f3f#define maxn 200using namespace std;int n;int cost[maxn];int dist[maxn][maxn];int path[maxn][maxn];void floyd(){for (int i = 1; i <= n; i++)for (int j = 1; j <= n; j++)path[i][j] = j;for(int k=1;k<=n;k++)for(int i=1;i<=n;i++)for(int j=0;j<=n;j++)if (dist[i][k] < INF&&dist[k][j] < INF){if (dist[i][j] > dist[i][k] + dist[k][j] + cost[k]){dist[i][j] = dist[i][k] + dist[k][j] + cost[k];path[i][j] = path[i][k];}else if (dist[i][j] == dist[i][k] + dist[k][j] + cost[k] && path[i][j] > path[i][k])path[i][j] = path[i][k];}}int main(){while (cin >> n, n){for(int i=1;i<=n;i++)for (int j = 1; j <= n; j++){cin >> dist[i][j];if (dist[i][j] == -1)dist[i][j] = INF;}for (int i = 1; i <= n; i++)cin >> cost[i];floyd();while(1){int u, v;cin >> u >> v; if (u == -1 && v == -1)break;printf("From %d to %d :\n", u,v);if (u != v){printf("Path: %d", u);int beg = path[u][v];while (1){printf("-->%d", beg);if (beg == v) { cout << endl; break; }beg = path[beg][v];}}else printf("Path: %d\n", u);printf("Total cost : %d\n\n", dist[u][v]);}}system("pause");}
阅读全文
0 0
- HDU 1385 Minimum Transport Cost(Floyd+字典序最小路径)
- HDU 1385 Minimum Transport Cost(Floyd+打印字典序最小路径)
- hdu 1385 Minimum Transport Cost(floyd打印最小字典序的最短路径)
- HDU 1385 Minimum Transport Cost(Floyd+打印字典序最小路径)
- HDU 1385-Minimum Transport Cost(floyd&&最小字典序)
- HDOJ 1385 Minimum Transport Cost (Floyd + 打印字典序最小的路径)
- hdu 1385 Minimum Transport Cost (Floyd + 字典序打印路径)
- hdu 1385 Minimum Transport Cost(最短路,floyd打印字典序路径)
- hdu 1385 Minimum Transport Cost 最短路 + 打印字典序最小路径
- HDU 1385 Minimum Transport Cost(Floyd + 打印路径)
- hdu 1385 Minimum Transport Cost(Floyd打印路径)
- hdu 1385 Minimum Transport Cost (最小字典序最短路径)
- HDU 1385 Minimum Transport Cost (Floyd求最短路径+记录字典序路径)
- HDU 1385 Minimum Transport Cost (字典序打印最短路)
- hdu 1385 Minimum Transport Cost(最短路 + 字典序最小路径)
- HDU - 1385 Minimum Transport Cost(最短路+最小字典序路径)
- HDU 1385 Minimum Transport Cost(最短路,打印字典序路径)
- hdu 1385 Minimum Transport Cost(最短路+字典序+打印路径)
- 4-5 算术入门之加减乘除
- 代码高亮显示库-highlight.js
- 常用JSON工具类JsonUtil封装
- 4-6 三天打鱼两天晒网
- 单链表逆置
- HDU 1385 Minimum Transport Cost(Floyd+打印字典序最小路径)
- 腾讯360之争
- Linux(十一)
- VC++实现视频聊天:FFmpeg解码+SDL播放视频
- gmp实现elgamal加密
- Linux(十二)
- C语言#ifdef,#else,#ifndef,#error等用法
- Xposed学习笔记
- 常见中文停用词表整理