九度OJ108 HDOJ3790:最短路径问题 迪杰斯特拉算法
来源:互联网 发布:阿里云邮箱客服400 编辑:程序博客网 时间:2024/05/01 17:34
浙大的这道考研上机题明摆着要使用最短路径算法,考虑时间复杂度,我用了迪杰斯特拉算法。
这道题比书上的样例算法稍微有些复杂,不仅要求距离最短,而且要在同时有多个距离最短的情况下,要求费用也最短。这个处理的方法就是更新最短路径时考虑两种情况。HDOJ的测试数据里有重边,因此输入时要将保存最短的重边。
我的AC代码:
#include <iostream>#include <algorithm>#include <stdio.h>#include <string.h>using namespace std;const int Max = 1000 + 10;int dist[Max][Max];int cost[Max][Max];int minDist[Max];int minCost[Max];const int Inf = 0x0fffffff;int n, m;void Dijkstra(int source){bool final[Max] = {false};for(int i=1; i<=n; ++i) minDist[i] = dist[source][i], minCost[i] = cost[source][i], final[i] = false;final[source] = true;for(int i=2; i<=n; ++i){int pos = 1, md = Inf, mc = Inf;for(int j=1; j<=n; ++j)if(!final[j] && ((minDist[j] < md) || (minDist[j] == md && minCost[j] < mc)))md = minDist[j], pos = j, mc = minCost[j];if(md == Inf) break;final[pos] = true;for(int j=1; j<=n; ++j)if(!final[j] && ((minDist[pos] + dist[pos][j] < minDist[j]) || (minDist[pos] + dist[pos][j] == minDist[j] && minCost[pos] + cost[pos][j] < minCost[j])))minDist[j] = minDist[pos] + dist[pos][j], minCost[j] = minCost[pos] + cost[pos][j];}}int main(){int a, b, c, d;int head, tail;while(scanf("%d %d", &n, &m) && !(!n && !m)){for(int i(0); i<Max; ++i)for(int j(0); j<Max; ++j) dist[i][j] = cost[i][j] = Inf;for(int i(0); i<m; ++i){scanf("%d %d %d %d", &a, &b, &c, &d);//判断重边if(dist[a][b] > c || (dist[a][b] == c && cost[a][b] > d)){dist[a][b] = dist[b][a] = c;cost[a][b] = cost[b][a] = d;}}scanf("%d %d", &head, &tail);Dijkstra(head);printf("%d %d\n", minDist[tail], minCost[tail]);}system("pause");return 0;}
- 九度OJ108 HDOJ3790:最短路径问题 迪杰斯特拉算法
- 九度1008,最短路径问题
- 九度[1008]-最短路径问题
- 最短路径问题 + 迪杰斯特拉算法
- 最短路径问题 迪杰斯特拉(Dijkstra)算法
- 九度OJ1008-最短路径问题 之 dijkstra算法的理解与实现
- 九度 OJ 题目1008:最短路径问题 (Dijstra 算法)
- 最短路径问题算法
- 算法:最短路径问题
- 九度OJ 1008最短路径问题
- 九度OnlineJudge之最短路径问题
- 九度oj 题目1008:最短路径问题
- 九度:题目1008:最短路径问题
- 九度OJ--1008--最短路径问题
- 九度题目1008:最短路径问题
- 九度oj 题目1008:最短路径问题
- 九度oj-1008-最短路径问题
- 九度 题目1008:最短路径问题
- API Hook完全手册
- Memcache的问题集
- JDK 6 目录结构介绍以及JDK中的工具研究
- 学习要以掌握为目的
- 结构体拷贝内存 与 #parama pack (1)
- 九度OJ108 HDOJ3790:最短路径问题 迪杰斯特拉算法
- [转]全面了解setjmp与longjmp的使用
- 在线色盘
- jQuery图片延迟加载解决方法
- Mysql xtrabackup 之creating a backup
- 可变参数 stdarg (二)
- cakephp菜鸟笔记3
- 获取本机IP
- cakephp菜鸟笔记4