最短路径问题

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 12105    Accepted Submission(s): 3668
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)
 
Output
输出 一行有两个数, 最短距离及其花费。
 
Sample Input
3 2 1 2 5 6 2 3 4 5 1 3 0 0
 
Sample Output
9 11
 
Dijkstra算法
#include<stdio.h>
#include<iostream>
#include<algorithm>
using namespace std;
#define M 1005
#define INF 99999int map[M][M],mat[M][M];
int n,m;void Dijkstra(int s,int t)
{int i,j,k;int min;int d[M],l[M],v[M];for(i=1;i<=n;i++) {d[i]=map[s][i]; //距离l[i]=mat[s][i]; //费用}memset(v,0,sizeof(v));v[s]=1;  for(i=1;i<n;i++)  // 遍历n-1个节点{min=INF;for(j=1;j<=n;j++){if(!v[j] && d[j] <min){min=d[j];k=j;}}v[k]=1;for(j=1;j<=n;j++){if(!v[j] && d[j]>d[k]+map[k][j])  //距离和费用同一时候更新{d[j]=d[k]+map[k][j];l[j]=l[k]+mat[k][j];}else if(d[j]==d[k]+map[k][j])  {if(l[j]>l[k]+mat[k][j])l[j]=l[k]+mat[k][j];}}}printf("%d %d\n",d[t],l[t]);
}int main ()
{int a,b,d,p,s,t;int i,j;while(scanf("%d%d",&n,&m)!=EOF){if(n==0&&m==0) break;for(i=1;i<=n;i++)     //初始化for(j=1;j<=n;j++){map[i][j]=INF;mat[i][j]=INF;  }for(i=0;i<m;i++){scanf("%d%d%d%d",&a,&b,&d,&p);if(map[a][b]>d){map[a][b]=map[b][a]=d;mat[a][b]=mat[b][a]=p;}else if(map[a][b]==d)  // 路径长度同样时。取最小费用if(mat[a][b]>p)   mat[a][b]=mat[b][a]=p;}scanf("%d%d",&s,&t);Dijkstra(s,t);   //起点和终点}return 0;
}

转载于:https://www.cnblogs.com/lxjshuju/p/7130660.html

hdu 3790 最短路径问题相关推荐

  1. hdu 3790(最短路径问题 SPFA算法)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3790 最短路径问题 Time Limit: 2000/1000 MS (Java/Others)    ...

  2. HDU 3790 最短路径问题 裸跑dijkstra

    原题: http://acm.hdu.edu.cn/showproblem.php?pid=3790 题目: 最短路径问题 Time Limit: 2000/1000 MS (Java/Others) ...

  3. hdu 3790 最短路径dijkstra(多重权值)

    最短路径问题 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Sub ...

  4. HDU 3790 最短路径问题 (dijkstra)

    最短路径问题 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Sub ...

  5. HDU 3790 最短路径问题

    最短路径问题 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submis ...

  6. HDU - 3790 最短路径问题

    给你n个点,m条无向边,每条边都有长度d和花费p,给你起点s终点t,要求输出起点到终点的最短距离及其花费,如果最短距离有多条路线,则输出花费最少的. Input输入n,m,点的编号是1~n,然后是m行 ...

  7. HDU 3790 最短路径问题 (SPFA)

    转载请注明出处:http://blog.csdn.net/a1dark 分析:比一般最短路多了一个花费.多加一个判断即可.用的SPFA.这道题让我搞清楚了以前定义INF为啥爆的问题.受益颇多. #in ...

  8. 【HDU - 3790】最短路径问题(DIjkstra算法 双权值)

    题干: 给你n个点,m条无向边,每条边都有长度d和花费p,给你起点s终点t,要求输出起点到终点的最短距离及其花费,如果最短距离有多条路线,则输出花费最少的. Input 输入n,m,点的编号是1~n, ...

  9. hdu 3790(最短路)

    最短路径问题 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Problem D ...

最新文章

  1. Elastic:为 Elasticsearch 启动 https 访问使数据访问更安全
  2. 数学建模第四节2020.4.24-5.3补
  3. linux停止jar程序,Linux 启动停止SpringBoot jar 程序部署Shell 脚本的方法
  4. linux l显示详细信息,fdisk -l显示信息详解
  5. python3中urlopen_解决python3 urllib中urlopen报错的问题
  6. 4、Node.js REPL(交互式解释器)
  7. Django 博客教程(三):创建应用和编写数据库模型
  8. git 可视化工具_Git的基本使用(二)
  9. multi source replication mysql,Disabling Multi-Source Replication in MySQL 5.7
  10. 为什么要用3个通道来表示法线?
  11. 1 CentOS下磁盘LVM扩容
  12. Codeforces Round #256 (Div. 2)——Multiplication Table
  13. sketch文件导出没有背景色怎么办? sketch背景色消失的解决办法
  14. Axure图片不显示
  15. x86汇编指令集大全(带注释)
  16. Android更改开机画面
  17. 实训任务4:Hadoop综合操作
  18. 晨读播报一:快手与抖音之间的较量
  19. 上班一个月挣10万,居然全靠它...
  20. C语言实现通讯录(含文件保存)

热门文章

  1. 以普通用户启动的Vim如何保存需要root权限的文件
  2. 信息化基础建设 工作流开发
  3. 双向链表的C++类模板实现
  4. Linux容器间共享内存,C++容器模板在共享内存中的使用
  5. java线程画动图闪,Android中利用画图类和线程画出闪烁的心形,android心形,package com....
  6. Mybatis foreach遍历
  7. python 鸭子类型_Python中的鸭子输入是什么?
  8. python bokeh_使用Bokeh将交互性添加到您的Python图中
  9. devops 工具_衡量DevOps成功的13种工具
  10. 在线生成艺术字_生成艺术:如何修改绘画