dijkstra_最短路径_hdu_3790
来源:互联网 发布:linux tcpdump 用法 编辑:程序博客网 时间:2024/06/06 04:23
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3790
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 13542 Accepted Submission(s): 4138
Problem Description
给你n个点,m条无向边,每条边都有长度d和花费p,给你起点s终点t,要求输出起点到终点的最短距离及其花费,如果最短距离有多条路线,则输出花费最少的。
Input
输入n,m,点的编号是1~n,然后是m行,每行4个数 a,b,d,p,表示a和b之间有一条边,且其长度为d,花费为p。最后一行是两个数 s,t;起点s,终点。n和m为0时输入结束。
(1<n<=1000, 0<m<100000, s != t)
(1<n<=1000, 0<m<100000, s != t)
Output
输出 一行有两个数, 最短距离及其花费。
Sample Input
3 21 2 5 62 3 4 51 30 0
Sample Output
9 11
#include <stdio.h>#include <string.h>int map[1010][1010], cost[1010][1010];short mark[1010];int dis[1010], Cos[1010];const int INF = 1000000;int main(){ int n, m, a, b, c, d, i, j, Min, v; while(scanf("%d%d",&n,&m), n + m) { for( i = 0; i <= n; i++) { for( j = 0; j <= n; j++) { map[i][j] = map[j][i] = INF; cost[i][j] = cost[j][i] = INF; } map[i][i] = 0; cost[i][i] = 0; } for( i = 0; i < m; i++) { scanf("%d%d%d%d",&a,&b,&c,&d); if( map[a][b] > c) <span style="font-size:14px;color:#009900;">///注意 这里 我WA了十几次</span> { map[a][b] = map[b][a] =c; cost[a][b] = cost[b][a] = d; } } scanf("%d%d",&a,&b); memset(mark ,0 ,sizeof(mark) ); mark[a] = 1; for( i = 1; i <= n; i++) { dis[i] = map[a][i]; Cos[i] = cost[a][i]; } for( i = 1; i < n; i++) { Min = INF; for( j = 1; j <= n; j++) if(!mark[j] && dis[j] < Min) { v = j; Min = dis[j]; } mark[v] = 1; for( j = 1; j <= n; j++) { if( !mark[j] && map[v][j] < INF) { if( dis[j] > dis[v] + map[v][j]) { dis[j] = dis[v] + map[v][j]; Cos[j] = Cos[v] + cost[v][j]; } else if( dis[j] == dis[v] + map[v][j]) { if(Cos[j] > Cos[v] + cost[v][j]) Cos[j] = Cos[v] + cost[v][j]; } } } } printf("%d %d\n",dis[b],Cos[b]); } return 0;}
运行结果:
0 0
- dijkstra_最短路径_hdu_3790
- Dijkstra_最短路
- 最短路径算法
- 最短路径算法
- 最短路径理解
- 最短路径算法
- 最短路径算法
- 最短路径问题
- 最短路径
- 最短路径
- 最短路径算法
- 图@ 最短路径
- 最短路径
- 最短路径算法
- 最短路径
- hdu2544(最短路径)
- 最短路径问题
- 最短路径问题
- 程序锁
- c练习题1:求最大公约数,最小公倍数
- srand ()与rand()函数小应用之猜数游戏
- Spring2.5.6的注入讲解
- Selenium WebDriver操作ligerui记录
- dijkstra_最短路径_hdu_3790
- poj 3844
- 多线程(六):ThreadLocal 关键字
- word2010总是出现配置进度框、word2003关闭时出现:您正试图运行的函数包含有宏
- MFC 读取配置文件ini
- 黑马程序员--Java基础--认识JAVA
- .NET 时间字符串转换
- 信号章节相关概念
- MFC中注册DLL函数