HDOJ 3790 最短路径问题
来源:互联网 发布:最新伪基站设备 淘宝 编辑:程序博客网 时间:2024/05/18 06:28
有两个权值,距离相等的时候判断一下花费
最短路径问题
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 11075 Accepted Submission(s): 3348
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
Source
浙大计算机研究生复试上机考试-2010年
#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>using namespace std;const int maxn=1100;const int INF=0x3f3f3f3f;int c[maxn][maxn],w[maxn][maxn];int n,m;int origional,vis[maxn],dist[maxn],cost[maxn];void dijkstra(){ memset(vis,0,sizeof(vis)); memset(dist,63,sizeof(dist)); memset(cost,63,sizeof(cost)); cost[origional]=dist[origional]=0; for(int l=0;l<n;l++) { int mark=-1,mindist=INF; for(int i=1;i<=n;i++) { if(vis[i]) continue; if(mindist>dist[i]) { mark=i; mindist=dist[i]; } } vis[mark]=1; for(int i=1;i<=n;i++) { if(vis[i]) continue; if(dist[i]>dist[mark]+w[mark][i]) { dist[i]=dist[mark]+w[mark][i]; cost[i]=cost[mark]+c[mark][i]; } else if(dist[i]==dist[mark]+w[mark][i]&&cost[i]>cost[mark]+c[mark][i]) { cost[i]=cost[mark]+c[mark][i]; } } }}int main(){while(scanf("%d%d",&n,&m)!=EOF){ if(n==0&&m==0) break; memset(c,63,sizeof(c)); memset(w,63,sizeof(w)); int a,b,d,p; for(int i=0;i<m;i++) { scanf("%d%d%d%d",&a,&b,&d,&p); if(d<w[a][b]) { c[a][b]=c[b][a]=p; w[a][b]=w[b][a]=d; } } int s,t; scanf("%d%d",&s,&t); origional=s; dijkstra(); printf("%d %d\n",dist[t],cost[t]);} return 0;}
1 0
- HDOJ 3790 最短路径问题
- HDOJ 3790 最短路径问题
- HDOJ 3790最短路径问题
- HDOJ 3790 最短路径问题
- hdoj 3790 最短路径问题
- Hdoj 3790 最短路径问题
- hdoj 3790 最短路径问题
- hdoj--3790--最短路径问题(双权值迪杰斯特拉)
- HDOJ 3790 最短路径问题
- HDOJ 3790 最短路径问题
- HDOJ 3790-最短路径问题
- HDOJ 最短路径问题
- hdoj最短路径问题
- HDOJ 最短路径问题
- hdoj最短路径问题
- HDOJ 3790 最短路径问题 (最短路 && Dijkstra && 双权值)
- HDOJ--3790--最短路径问题(双权值问题)
- HDOJ题目3790最短路径问题(最短路径,Dijkstra双权值)
- 树型结构1 堆排序 线索二叉树 huffman
- JS弹窗效果的运用(代码)
- 游标
- 自增长序列
- Java代码检查和bug分析工具
- HDOJ 3790 最短路径问题
- The source code of the Account class of the famous IM app
- 程序员怎么才能提高代码编写速度?
- Hibernate二级缓存的配置
- 内存和指针泄露常见问题
- Coursera公开课Functional Programming Principles in Scala习题解答:Week 1
- JavaScript省市联动菜单
- 树型结构2 AVL 森林与二叉树转化 二叉链表三种遍历
- maven教程之三仓库