【PAT甲级】1030. Travel Plan (30)
来源:互联网 发布:mac激活时间查询 编辑:程序博客网 时间:2024/06/10 01:32
#include <stdio.h>#define MAX 9999999typedef struct Ci { int dist; int cost;} Ci;Ci map[501][501];int n, m, s, d;int main(int argc, char *argv[]) { scanf("%d %d %d %d", &n, &m, &s, &d); int i, j, k; for (i = 0; i < n; i++) { for (j = 0; j < n; j++) { if (i != j) { map[i][j].dist = map[j][i].dist = MAX; map[i][j].cost = map[j][i].cost = MAX; } else { map[i][j].dist = 0; map[i][j].cost = 0; } } } for (i = 0; i < m; i++) { int a, b, ds, cs; scanf("%d %d %d %d", &a, &b, &ds, &cs); map[a][b].dist = map[b][a].dist = ds; map[a][b].cost = map[b][a].cost = cs; } int set[501] = {0}; int route[501] = {0}; int ds[501], cs[501]; for (i = 0; i < n; i++) ds[i] = cs[i] = MAX; set[s] = 1; ds[s] = 0; cs[s] = 0; route[s] = -1; int t = n - 1; int p = s; while (t-- > 0) { set[p] = 1; for (i = 0; i < n; i++) { if (set[i] == 0) { if (ds[p] + map[p][i].dist < ds[i]) { ds[i] = ds[p] + map[p][i].dist; cs[i] = cs[p] + map[p][i].cost; route[i] = p; } else if (ds[p] + map[p][i].dist == ds[i]) { if (cs[i] > cs[p] + map[p][i].cost) { cs[i] = cs[p] + map[p][i].cost; route[i] = p; } } } } int mindis = MAX; int minIndex = 0; for (i = 0; i < n; i++) { if (set[i] == 0 && ds[i] < mindis) { mindis = ds[i]; minIndex = i; } } p = minIndex; if (p == d) break; } int path[501]; for (i = d, j = 0; i >= 0; i = route[i], j++) { path[j] = i; } for (i = 0; i < j; i++) { printf("%d ", path[j - i - 1]); } printf("%d %d\n", ds[d], cs[d]); return 0;}
0 0
- 【PAT甲级】1030. Travel Plan (30)
- PAT甲级练习1030. Travel Plan (30)
- PAT甲级1030. Travel Plan (30)
- 1030. Travel Plan (30) PAT 甲级
- PAT 甲级 1030. Travel Plan (30)
- PAT甲级 1030. Travel Plan (30)
- PAT甲级1030. Travel Plan(30)
- 1030. Travel Plan (30)-PAT甲级真题
- 1030. Travel Plan (30)-PAT
- 1030. Travel Plan (30) PAT
- PAT 1030. Travel Plan (30)
- PAT 1030. Travel Plan (30)
- PAT 1030. Travel Plan (30)
- 【PAT】1030. Travel Plan (30)
- pat 1030. Travel Plan (30)
- PAT 1030. Travel Plan (30)
- 1030. Travel Plan (30)-PAT甲级真题(Dijkstra + DFS,输出路径,边权)
- PAT 1030. Travel Plan
- 第八周项目二 建立链串的算法库
- ExoPlayer 播放器开发指南(译)
- 【第八周项目4-字符串加密】
- 玩具工厂
- (第八周项目2)建立链串的算法库
- 【PAT甲级】1030. Travel Plan (30)
- 在Linux环境下实现一个非常好的bash脚本框架
- IoGetConfigurationInformation 接口使用--增加系统设备数量
- 【第8周实践项目4-字符串加密】
- qemu QOM(qemu object model)和设备模拟
- Linux Thread编程
- NDK开发 从入门到放弃(一:基本流程入门了解)
- 第八周项目5-计数的模式匹配
- 【浅谈递归(二)】常见递归问题的分析与解答