hdu 1385 Minimum Transport Cost
2013-09-07 15:02
246 查看
hdu 1385 Minimum Transport Cost
Floyd最短路径和按字典序存放最短路径.
#include <stdio.h> #define MAX 105 #define INF 0xffffff int map[MAX][MAX]; int tax[MAX]; int path[MAX][MAX]; int n; void floyd() { int i, j, k; int cost; // 初始化路径, path[i][j]表示的是i到j要经过的路, 如path[1][3] = 5,表示1->3要经过5 for (i = 1; i <= n; i++) { for (j = 1; j <= n; j++) { path[i][j] = j; } } // floyd for (k = 1; k <= n; k++) { for (i = 1; i <= n; i++) { for (j = 1; j <= n; j++) { cost = map[i][k] + map[k][j] + tax[k]; if (cost < map[i][j]) { map[i][j] = cost; path[i][j] = path[i][k]; } else if (cost == map[i][j]) { // 字典序 if (path[i][j] > path[i][k]) { path[i][j] = path[i][k]; } } } } } } int main() { int i, j; int a, b; int c, cur; while (scanf("%d", &n) != EOF && n) { for (i = 1; i <= n; i++) { for (j = 1; j <= n; j++) { scanf("%d", &c); if (c == -1) { map[i][j] = INF; } else { map[i][j] = c; } } } for (i = 1; i <= n; i++) { scanf("%d", &tax[i]); } floyd(); while (scanf("%d%d", &a, &b)) { if (a == -1 && b == -1) { break ; } printf("From %d to %d :\n", a, b); printf("Path: %d", a); cur = a; while (cur != b) { printf("-->%d", path[cur][b]); cur = path[cur][b]; } printf("\nTotal cost : %d\n\n", map[a][b]); } } return 0; }
相关文章推荐
- HDU - 1385 Minimum Transport Cost(floyd打印路径)
- HDU 1385 Minimum Transport Cost(Floyd + 打印路径)
- HDU 1385 Minimum Transport Cost (Dijstra 最短路)
- HDU - 1385 Minimum Transport Cost
- hdu 1385 Minimum Transport Cost(最短路+输出路径)
- 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(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 【最短路 + 最小字典序路径输出】
- HDU 1385 Minimum Transport Cost
- hdu 1385 Minimum Transport Cost
- HDU-1385 Minimum Transport Cost
- HDU - 1385 - Minimum Transport Cost