Hdu 3079 最短路径问题
来源:互联网 发布:瑞斯康微电子 知乎 编辑:程序博客网 时间:2024/06/10 11:48
Dij 快速敲成模板
在更新边的距离时,特判一下是否更新花费。
AC代码:
#include<iostream>#include<cstdio>#include<cstring>#include<cstdlib>using namespace std;#define INF 0x7fffffffint n,m;int map[1005][1005];int cost[1005][1005];void dijkstra(int st,int ed){ int i,j,v,Min; int visit[1005],dis[1005],value[1005]; for(i=1;i<=n;i++) { dis[i]=map[st][i]; value[i]=cost[st][i]; } memset(visit,0,sizeof(visit)); visit[st]=1; for(i=1;i<n;i++) { Min=INF; for(j=1;j<=n;j++) if(!visit[j]&&dis[j]<Min) { v=j; Min=dis[j]; } visit[v]=1; for(j=1;j<=n;j++) { if(!visit[j]&&map[v][j]<INF) { if(dis[j]>dis[v]+map[v][j]) { dis[j]=dis[v]+map[v][j]; value[j]=value[v]+cost[v][j]; } else if(dis[j]==dis[v]+map[v][j]) { if(value[j]>value[v]+cost[v][j]) value[j]=value[v]+cost[v][j]; } } } } printf("%d %d\n",dis[ed],value[ed]);}int main(){ int i,j,st,ed; int a,b,c,d; while(scanf("%d%d",&n,&m),n||m) { for(i=1;i<=n;i++) for(j=1;j<=n;j++) { map[i][j]=INF; cost[i][j]=INF; } while(m--) { scanf("%d%d%d%d",&a,&b,&c,&d); if(map[a][b]>c) { map[a][b]=map[b][a]=c; cost[a][b]=cost[b][a]=d; } else if(map[a][b]==c) { if(cost[a][b]>d) cost[a][b]=cost[b][a]=d; } } scanf("%d%d",&st,&ed); dijkstra(st,ed); } return 0;}
- Hdu 3079 最短路径问题
- 最短路径问题 HDU
- 【最短路径-Dis】hdu 3790 最短路径问题
- hdu 3790 最短路径问题
- hdu 3790 最短路径问题
- HDU-3790-最短路径问题
- HDU 3790 最短路径问题
- hdu 3790 最短路径问题
- Hdu 3790 最短路径问题
- HDU 3790 最短路径问题
- HDU 3790 最短路径问题
- hdu 3790 最短路径问题
- hdu 3790 最短路径问题
- 最短路径问题 hdu 3790
- hdu 3790 最短路径问题
- HDU 2544最短路径问题
- hdu 3790 最短路径问题
- hdu--最短路径问题--3790
- CGContextSaveGState和CGContextRestoreGState UIGraphicsPushContext和UIGraphicsPopCo
- Android 仿大众点评团购购买条浮动效果
- LVS 三种工作模式的优缺点比较
- .net网站可以部署到linux系统
- 对于文件使用方式有以下几点说明:
- Hdu 3079 最短路径问题
- 开灯问题
- 统计字符串中的字母,数字,空格和其他字符的个数---指针
- kernel hexdump分析
- 开灯问题
- 邻接矩阵
- 预编译的优点(Statement和PrepareStatement 的区别)
- getch()、getche()和getchar()函数
- 数据共享+指向自身类型的指针+智能指针