最短路径--九度1008.[Dijkstra]
2017-02-28 10:26
253 查看
题目:http://ac.jobdu.com/problem.php?pid=1008
本题要求是要在最短路径长度相同的情况下,选择花费小的方案,但其实是没有这样的测试点的;九度还是有点弱哪!!
【纠结】:为什么在选最小边时不用考虑花费因素呢?
本题要求是要在最短路径长度相同的情况下,选择花费小的方案,但其实是没有这样的测试点的;九度还是有点弱哪!!
【纠结】:为什么在选最小边时不用考虑花费因素呢?
#include<cstdio> #define maxSize 100000000 using namespace std; int edges[1010][1010]; //边长 int cost[1010][1010]; //表示花费 int visit[1010]; //表示是否已访问 int dist[1010]; //表示当前已经找到的从V0到Vi的最短路径长度 int minCost[1010]; //表示最小花费 int main() { int n, m, a, b,d, p, s, t; while (scanf("%d%d", &n, &m) != EOF) { if (0 == n && 0 == m) break;//退出 for (int i = 1; i <= n; i++) {//初始化边长、花费 for (int j = 1; j <= n; j++) { edges[i][j] = maxSize; cost[i][j] = maxSize; } } for (int i = 0; i < m; i++) {//输入 scanf("%d%d%d%d", &a, &b, &d, &p); edges[a][b] = edges[b][a] = d; cost[a][b] = cost[b][a] = p; } scanf("%d%d", &s, &t);//输入起点&终点 for (int i = 1; i <= n; i++) {//初始化 dist[i] = edges[s][i]; minCost[i] = cost[s][i]; visit[i] = 0; } visit[s] = 1;//加入起点 for (int k = 2; k <= n; k++) { int min = maxSize, key = s; for (int i = 1; i <= n; i++) { //选最小边时不用考虑花费因素,因为距离最近的点的花费已经不可能由于经过其他点而发生改变了 if (visit[i] == 0 && min > dist[i]) { min = dist[i]; key = i; }//if }//for - i visit[key] = 1;//加入出发点 for (int j = 1; j <= n; j++) {//更新 if (visit[j] == 0 && (dist[key] + edges[key][j] < dist[j] || (dist[key] + edges[key][j] == dist[j] && minCost[key] + cost[key][j] < minCost[j]) ) //距离相同时,选花费小的 ) { dist[j] = dist[key] + edges[key][j]; minCost[j] = minCost[key] + cost[key][j]; } } } printf("%d %d\n", dist[t], minCost[t]); }//while return 0; }
相关文章推荐
- 九度1008:最短路径问题(Dijkstra)
- 九度1008&&HDU - 3790:最短路径问题 (最短路径dijkstra)
- 九度题目1008:最短路径问题
- 九度题目1008:最短路径问题
- 九度 OJ 1008 最短路径问题
- 九度[1008]-最短路径问题
- //九度教程78 dijkstra算法之单源最短路径
- [九度OJ]1008.最短路径问题
- 九度-1008 最短路径
- 九度 oj 题目1008:最短路径问题
- 最短路径--九度1447[Floyd & Dijkstra]
- 九度 OJ 题目1008:最短路径问题 (Dijstra 算法)
- 【九度OJ】1008【加权无向图最短路径】
- 九度 OJ 1447 题 最短路径问题 Dijkstra(迪杰斯特拉)算法实现,使用vector模板模拟邻接链表
- 九度OJ 1008:最短路径问题 (最短路)
- 九度:题目1008:最短路径问题
- 九度oj 题目1008:最短路径问题 【ZJU2010考研机试题4】【dij+dfs】
- 最短路径问题—九度OJ1008 (2010年浙江大学研究生机试真题)
- 九度OJ 1008:最短路径问题 (最短路)
- 九度OJ-1008:最短路径问题