hdu3790 最短路径问题
来源:互联网 发布:开淘宝怎么交保证金 编辑:程序博客网 时间:2024/05/17 05:12
hdu3790
注意:1.有重边的情况。
2.要判断两种情况,路径相同时判断花费的多少。
#include<stdio.h>#include <iostream>#include<string.h>#include<stdlib.h>#include<math.h>#include<algorithm>#include<list>#include<vector>#pragma comment(linker,"/STACK:102400000,102400000")using namespace std;#define INF 1000000#define MAX 1005int main(){ int dis[MAX],cost[MAX][MAX],visit[MAX],map[MAX][MAX],cos[MAX];int n,m;int a,b,d,p;int i,j,s,t,min,pre,k;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;}}for(i=0;i<MAX;i++){ visit[i]=0;}for (i=0;i<m;i++){scanf("%d%d%d%d",&a,&b,&d,&p);if(d<map[a][b]){map[a][b]=map[b][a]=d;cost[a][b]=cost[b][a]=p;}else if(d==map[a][b] && p<cost[a][b]){cost[a][b]=cost[b][a]=p;}}scanf("%d%d",&s,&t);visit[s]=1;for (j=1;j<=n;j++){dis[j]=map[s][j];cos[j]=cost[s][j];}for (i=1;i<=n;i++){min=INF;for (j=1;j<=n;j++){if(!visit[j] && min>dis[j]){min=dis[j];pre=j;}}visit[pre]=1;for (k=1;k<=n;k++){if(!visit[k] && dis[k] > dis[pre]+map[pre][k]){dis[k]=dis[pre]+map[pre][k];cos[k]=cos[pre]+cost[pre][k];}else if(!visit[k]&&dis[k]==dis[pre]+map[pre][k]&&cos[k]>cos[pre]+cost[pre][k])//路径相同时判断花费的多少{cos[k]=cos[pre]+cost[pre][k];}}}printf("%d %d\n",dis[t],cos[t]);}return 0;}
- hdu3790 最短路径问题
- hdu3790 最短路径问题
- HDU3790--最短路径问题
- hdu3790 最短路径问题
- hdu3790 最短路径问题
- HDU3790:最短路径问题
- hdu3790 最短路径问题
- hdu3790最短路径问题
- hdu3790 最短路径问题
- hdu3790最短路径问题
- [hdu3790]最短路径问题
- HDU3790-最短路径问题
- hdu3790 最短路径问题
- HDU3790 最短路径问题
- HDU3790 最短路径问题
- HDU3790 最短路径问题
- hdu3790 最短路径问题
- hdu3790最短路径问题
- 谈web-基本
- oracle 创建序列
- 高斯图像滤波原理及其编程离散化实现方法
- 给前端开发人员的建议
- 谈web-方案选择
- hdu3790 最短路径问题
- Flex中的fx、mx和s命名空间
- 学习笔记 一
- 谈web--部署和服务器选型
- Ubuntu下不能用sunpinyin进行翻页问题解决
- java applet 猜数字小游戏
- python中函数陷阱
- pku 3278 Catch That Cow bfs
- ini文件的读写方法