最短路径问题 hdu acm c++
来源:互联网 发布:lol进游戏无法连接网络 编辑:程序博客网 时间:2024/06/04 18:25
最短路径问题
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 13653 Accepted Submission(s): 4183
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
思路:dijskra算法,只是这道题要同时保存两个值;
参考代码:
#include<cstdio>#include<cstring>#define MIN 1000000000int flag[100010];struct IN{ int ll; int p;};IN point[10010][10010];IN dist[10010];void dijskra(int n,int s){ int i,j,k,min,mmin,v; for(i=1;i<=n;i++) { dist[i].ll=point[s][i].ll; dist[i].p=point[s][i].p; } flag[s]=1; dist[s].ll=0; dist[s].p=0; for(i=2;i<=n;i++) { min=MIN; mmin=MIN; for(j=1;j<=n;j++) { if(!flag[j]&&min==dist[j].ll&&dist[j].p<mmin) { min=dist[j].ll; mmin=dist[j].p; v=j; } if(!flag[j]&&min>dist[j].ll) { min=dist[j].ll; mmin=dist[j].p; v=j; } } flag[v]=1; for(k=1;k<=n;k++) { if(!flag[k] && (dist[k].ll==min+point[v][k].ll) &&dist[k].p>mmin+point[v][k].p) { dist[k].ll=min+point[v][k].ll; dist[k].p=mmin+point[v][k].p; } if(!flag[k]&&(dist[k].ll>min+point[v][k].ll)) { dist[k].ll=min+point[v][k].ll; dist[k].p=mmin+point[v][k].p; } } }}int main(){ int i,j,k,a,b,c,d,s,n,m,end; while(scanf("%d%d",&n,&m)&&(m+n)) { memset(flag,0,sizeof(flag)); for(i=0;i<=n;i++) { dist[i].ll=MIN; dist[i].p=MIN; for(j=0;j<=n;j++) { if(i==j) { point[i][j].ll=0; point[i][j].p=0; } else { point[i][j].ll=MIN; point[i][j].p=MIN; } } } for(i=1;i<=m;i++) { scanf("%d%d%d%d",&a,&b,&c,&d); if(point[a][b].ll>c||(point[a][b].ll==c&&point[a][b].p>d)) { point[a][b].ll=point[b][a].ll=c; point[a][b].p=point[b][a].p=d; } } scanf("%d%d",&s,&end); dijskra(n,s); printf("%d %d\n",dist[end].ll,dist[end].p); } return 0;}
0 0
- 最短路径问题 hdu acm c++
- HDU ACM 3790 最短路径问题
- hdu acm 3790 最短路径问题
- 杭电ACM HDU 3790 最短路径问题
- HDU ACM 3790最短路径问题(SPFA算法实现)
- 最短路径问题 HDU
- acm-街区最短路径问题
- ACM 街区最短路径问题 Java
- acm 街区最短路径问题
- ACM-ICPC 最短路径问题
- ACM (7) 街区最短路径问题
- ACM街区最短路径问题
- 【最短路径-Dis】hdu 3790 最短路径问题
- http://acm.hdu.edu.cn/showproblem.php?pid=3790&&最短路径问题
- hdu 3790 最短路径问题
- hdu 3790 最短路径问题
- HDU-3790-最短路径问题
- HDU 3790 最短路径问题
- VS中的 MD/MT设置
- zookeeper watcher功能分析
- java测试请求网站返回的状态码
- Crofter's加拿大进口克拉夫特草莓果酱283g USDA有机认证非转基因
- 运行时存储空间的组织和管理
- 最短路径问题 hdu acm c++
- AJAX技术使用XMLHttpRequest对象传递参数的中文乱码问题
- 多重继承下,不同基类指针指向同一子类对象的地址问题——腾讯一笔试题
- jsp返回xml浏览器解析错误问题解决方法
- ACM 109. [NOIP2004] 合唱队形(dp+枚举)
- 点击展开关闭效果
- Cocos2d-x学习资源集锦
- WINCE6.0+ILI9806E驱动IC显示屏调试总结
- WINCE6.0+ILI9806E休眠唤醒显示异常问题