Hdoj 3790 最短路径问题
来源:互联网 发布:linux删除文件夹还存在 编辑:程序博客网 时间:2024/05/17 14:15
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
#include<cstdio>#include<cstring>#include<algorithm>#include<cmath>#include<iostream>#define INF 0x7f7f7f7f///初始化巨坑,0x7fffffff会报错#define maxn 1005using namespace std;int dis[maxn];int spend[maxn];int cost[maxn][maxn];int Map[maxn][maxn];bool vis[maxn];int n,m;void init(){ memset(vis,false,sizeof(vis)); for(int i = 1;i <= 1004;i++) { dis[i]=INF; spend[i]=INF; for(int j = 1;j <= 1004;j++) cost[i][j]=Map[i][j]=INF; }}void dij(int st,int en)///dij模板{ dis[st]=0; spend[st]=0; for(int i = 1;i <= n;i++) { int minn = INF; int mark; for(int j = 1;j <= n;j++) { if(!vis[j] && dis[j] <= minn) { minn = dis[j]; mark = j; } } if(minn == INF) break; vis[mark]=true; for(int j = 1;j <= n;j++) { if(!vis[j] && dis[j] > dis[mark]+Map[mark][j]) { dis[j] = dis[mark]+Map[mark][j]; spend[j] = spend[mark]+cost[mark][j]; } else if(dis[j] == dis[mark]+Map[mark][j] && spend[j] > spend[mark]+cost[mark][j]) spend[j] = spend[mark]+cost[mark][j]; } }}int main(){ while(~scanf("%d%d",&n,&m)) { if(n==0&&m==0) break; int a,b,d,p; init(); while(m--) { scanf("%d%d%d%d",&a,&b,&d,&p); if(a!=b&&Map[a][b]>d)///这里的与cost没有关系 { Map[a][b]=Map[b][a]=d; cost[a][b]=cost[b][a]=p; } } int st,en; scanf("%d%d",&st,&en); dij(st,en); printf("%d %d\n",dis[en],spend[en]); } return 0;}
0 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双权值)
- ionic 项目中使用ngCordova插件$cordovaCamera筛选手机图库图片显示出来并上传
- 文章标题
- HDOJ Kiki & Little Kiki 2 2276【位运算+矩阵快速幂】
- 手机网页摇一摇问题
- 关于坚持与凝聚力
- Hdoj 3790 最短路径问题
- QT 总结(一)(1.某位设1或0 2.加载dll、lib库 3.char * 转换为 wchar_t * 4.textBrowser 显示乱码 追加 5.checkBox的使能)
- hdu 5361 2015多校联合训练赛#6 最短路
- Java IO流--字符流
- Learning!数组|Array
- Curl状态码列表
- android中使用LocationManager定位获取信息
- 【web基础2】别老打开百度了,自己做一个试试?
- Restlet学习