HDU 3790 最短路径问题 dij
来源:互联网 发布:香港4g网络制式 编辑:程序博客网 时间:2024/05/20 22:29
G - 最短路径问题
Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64uDescription
给你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
求最短路径,如果有多条,求花费最小的那条
ACcode:
#include <iostream>#include <cstdio>#include <cstring>#define maxn 1000#define inf 0x3f3f3f3fusing namespace std;bool vis[maxn];int pre[maxn];int cost[maxn][maxn],len[maxn][maxn],lowcost[maxn],lowlen[maxn];void dij(int n,int beg,int ed){ for(int i=1;i<=n;++i){ lowlen[i]=len[beg][i]; lowcost[i]=cost[beg][i]; vis[i]=false; pre[i]=-1; } lowcost[beg]=0; for(int j=1;j<=n;j++){ int k=-1; int minn=inf; for(int i=1;i<=n;i++) if(!vis[i]&&lowcost[i]<minn){ minn=lowcost[i]; k=i; } if(k==-1)break; vis[k]=true; for(int i=1;i<=n;i++){ if(!vis[i]&&lowcost[k]+cost[k][i]<lowcost[i]){ lowcost[i]=lowcost[k]+cost[k][i]; lowlen[i]=lowlen[k]+len[k][i]; pre[i]=k; } else if(!vis[i]&&lowcost[k]+cost[k][i]==lowcost[i]&&lowlen[k]+len[k][i]<lowlen[i]){ lowlen[i]=lowlen[k]+len[k][i]; } } }}void add(){ int u,v,mcost,mlen; scanf("%d%d%d%d",&u,&v,&mcost,&mlen); if(cost[u][v]>mcost){ cost[u][v]=cost[v][u]=mcost; len[u][v]=len[v][u]=mlen; }}int main(){ int n,m; while(~scanf("%d%d",&n,&m)&&n+m){ for(int i=1;i<=n;++i) for(int j=1;j<=n;++j) len[i][j]=cost[i][j]=inf; while(m--)add(); int st,ed; scanf("%d%d",&st,&ed); dij(n,st,ed); // for(int i=1;i<=n;++i)printf("lowcost[%d]=%d lowlen[%d]=%d \n",i,lowcost[i],i,lowlen[i]); cout<<lowcost[ed]<<" "<<lowlen[ed]<<'\12'; } return 0;}/*3 21 2 5 62 3 4 51 34 41 3 5 63 4 4 51 2 5 22 4 4 31 44 41 3 5 23 4 4 31 2 5 62 4 4 51 40 0*/
0 0
- HDU 3790 最短路径问题 dij
- DIJ问题,最短路径
- HDU3790 最短路径问题+dij算法
- Dij.......最短路径算法
- dij 最短路径模板
- 【最短路径-Dis】hdu 3790 最短路径问题
- hdu 2544 最短路(最短路径)(flody、dij、dij+priority queue、bellman、spfa)
- hdu 3790 最短路径问题
- hdu 3790 最短路径问题
- HDU-3790-最短路径问题
- HDU 3790 最短路径问题
- hdu 3790 最短路径问题
- Hdu 3790 最短路径问题
- HDU 3790 最短路径问题
- HDU 3790 最短路径问题
- hdu 3790 最短路径问题
- hdu 3790 最短路径问题
- 最短路径问题 hdu 3790
- jsp页面中html,javascript.css的执行顺序
- MFC Check Box控件的用法
- 友盟bug追踪
- 【计算机视觉】OpenCV人脸识别facerec源码分析2——LBPH概述
- pycharm永久显示行号
- HDU 3790 最短路径问题 dij
- 微信自带浏览器被输入法阻挡文本框的 jQuery 解决方法 by FungLeo
- StringUtils.isNotBlank
- 兔子问题--斐波那契数列
- 那些年我们一起清除过的浮动
- C++下的DLL编程入门
- leetcode_58_Length of Last Word
- pthread_detach
- 【BZOJ1045】[HAOI2008] 糖果传递【绝对值不等式】【中位数】【数形结合】