hdoj-3970-最短路径问题
来源:互联网 发布:淘宝插件 编辑:程序博客网 时间:2024/06/04 23:19
最短路径问题
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 15293 Accepted Submission(s): 4626
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
Source
浙大计算机研究生复试上机考试-2010年
#include<stdio.h>#include<string.h>const int maxint=0xfffffff;const int N=1000+10;int map[1001][1001],cost[1001][1001];int min_dis,min_cost;void dijkstra(int s,int t,int n){int i,j,k,p,min;static bool visit[N];int dis[N],cost1[N];memset(visit,0,sizeof(visit));for(i=1;i<=N;++i){dis[i]=map[s][i];cost1[i]=cost[s][i];}dis[s]=0;visit[s]=true;for(k=1;k<n;++k){for(min=maxint,i=1;i<=n;++i){if(!visit[i]&&dis[i]<min) p=i,min=dis[i];}if(min>=maxint) break;for(visit[p]=1,i=1;i<=n;++i) if(!visit[i]&&map[p][i]>=0){ if(min+map[p][i]<dis[i]) dis[i]=min+map[p][i],cost1[i]=cost[p][i]+cost1[p];//path[i]=p;else if(dis[i]==min+map[p][i]&&cost1[i]>cost[p][i]+cost1[p]) cost1[i]=cost[p][i]+cost1[p]; }if(visit[t]){min_dis=dis[t];min_cost=cost1[t];return ;}}}int main(){int n,m,i,j,a,b,d,p,s,t;while(~scanf("%d%d",&n,&m),n||m){for(i=1;i<=n;++i) for(j=1;j<=i;++j){ map[i][j]=map[j][i]=maxint; cost[i][j]=cost[j][i]=maxint; }for(i=1;i<=m;++i){scanf("%d%d%d%d",&a,&b,&d,&p);if(map[a][b]>d) //最开始没有判断 map[a][b] 与 d 的大小,而把d直接赋值给 map[a][b] 了,导致wrong !!!!!!map[a][b]=map[b][a]=d,cost[a][b]=cost[b][a]=p;}scanf("%d%d",&s,&t);dijkstra(s,t,n);printf("%d %d\n",min_dis,min_cost);}return 0;}
0 0
- hdoj-3970-最短路径问题
- HDOJ 最短路径问题
- hdoj最短路径问题
- HDOJ 最短路径问题
- hdoj最短路径问题
- HDOJ 3970 最短路径问题[Dijsktra算法的应用]
- HDOJ 3790 最短路径问题
- HDOJ 3790 最短路径问题
- HDOJ 3790最短路径问题
- HDOJ 3790 最短路径问题
- hdoj 3790 最短路径问题
- Hdoj 3790 最短路径问题
- hdoj 3790 最短路径问题
- hdoj--3790--最短路径问题(双权值迪杰斯特拉)
- HDOJ 3790 最短路径问题
- HDOJ 3790 最短路径问题
- HDOJ 3790-最短路径问题
- HDOJ 3790 最短路径问题 (最短路 && Dijkstra && 双权值)
- ios ximages.xcassets
- qt创建动态库,静态库
- 学习资料整理
- AVL树的实现
- 用GDB调试程序
- hdoj-3970-最短路径问题
- Mac下添加java环境变量
- Unity-->实现剪刀石头布的游戏
- CALayer简介 (五)创建自定义CALayer
- 实验有序链表的合并
- ThinkPHP中关于RBAC使用详解
- POJ2183 Bovine Math Geniuses【伪随机数】
- ios开发之使用UIWebView打开本地的HTML、txt、PDF、PPT文件、打开远程的共享资源
- 三层