hdu3790
来源:互联网 发布:php面试真题 编辑:程序博客网 时间:2024/04/29 15:28
#include<iostream>#include<cstdio>#include<cstring>using namespace std;const int maxn=1005;const int inf=0x3f3f3f3f;int mp[maxn][maxn],mpp[maxn][maxn];int dis[maxn],cost[maxn];int n;void Dijkstra(int s){ int vis[maxn]; memset(vis,0,sizeof(vis)); for(int i=1;i<=n;i++){ dis[i]=mp[s][i]; cost[i]=mpp[s][i]; } vis[s]=1;dis[s]=cost[s]=0; for(int i=1;i<n;i++){ int mi=inf,pos; for(int j=1;j<=n;j++){ if(dis[j]<mi&&!vis[j]){ pos=j;mi=dis[j]; } } if(mi==inf) break; vis[pos]=1; for(int j=1;j<=n;j++){ if(dis[j]>dis[pos]+mp[pos][j]&&!vis[j]){ dis[j]=dis[pos]+mp[pos][j]; cost[j]=cost[pos]+mpp[pos][j]; } else if(dis[j]==dis[pos]+mp[pos][j]&&!vis[j]){ if(cost[j]>cost[pos]+mpp[pos][j]) cost[j]=cost[pos]+mpp[pos][j]; } } }}int main(){ int m,s,t; while(~scanf("%d%d",&n,&m)&&(m+n)){ for(int i=0;i<=n;i++){ for(int j=0;j<=n;j++){ mp[i][j]=mpp[i][j]=inf; } mp[i][i]=mpp[i][i]=0; } for(int i=0;i<m;i++){ int a,b,c,d; scanf("%d%d%d%d",&a,&b,&c,&d); if(c<mp[a][b]){ mp[a][b]=mp[b][a]=c; mpp[a][b]=mpp[b][a]=d; } else if(c==mp[a][b]&&d<mpp[a][b]){ mpp[a][b]=mpp[b][a]=d; } } scanf("%d%d",&s,&t); Dijkstra(s); printf("%d %d\n",dis[t],cost[t]); } return 0;}
0 0
- hdu3790
- hdu3790
- hdu3790
- hdu3790
- HDU3790
- HDU3790(Dijkstra)
- HDU3790(SPFA)
- HDU3790 SPFA
- hdu3790 (最短路)
- hdu3790-----单源最短路径
- hdu3790解题报告
- hdu3790最短路径
- hdu3790-我可以再坑点吗
- hdu3790 dijkstra算法
- hdu3790双权值最短路问题
- hdu3790 单点floyd松弛
- hdu3790(双关键字最短路)
- hdu3790 最短路径问题
- HDU 5724 Chess(博弈论)
- 收集的开发中常用内容总结
- 最大流的Ford-Fulkerson方法初步
- hdu 1034
- Java学习一般要多长时间
- hdu3790
- Monit监控软件安装
- Anagrams
- 1084. Broken Keyboard (20)
- java开发中的23种设计模式详解
- #500-4 Java 中的 Date 类
- Codeforces Round #298 (Div. 2) -- Polycarpus' Dice (数学推理)
- shell调用自定义函数及传参
- iOS中集成ijkplayer视频直播框架