dijkstra算法模板

http://acm.hdu.edu.cn/showproblem.php?pid=1874

  1. #include<stdio.h>
  2. #include<string.h>
  3. #include<math.h>
  4. #include<iostream>
  5. #include<stdlib.h>
  6. #include<algorithm>
  7. #include<queue>
  8. #include<vector>
  9. #include<string>
  10. #include<set>
  11. #include<cctype>
  12. #include<sstream>
  13. #define mem(a) memset(a,0,sizeof(a))
  14. #define LL long long
  15. #define inf 0x3f3f3f3f
  16. using namespace std;
  17. const int N=1e3+;
  18. int mp[N][N],dis[N],mark[N];
  19. int n,m;
  20. int dijkstra(int s,int t)
  21. {
  22. for(int i=;i<n;i++)
  23. dis[i]=(i==s?:mp[s][i]);
  24. mark[s]=;
  25. //dis[s]=0;
  26. int v;
  27. for(int i=;i<n;i++)
  28. {
  29. int mx=inf;
  30. for(int j=;j<n;j++)
  31. if(dis[j]<mx&&!mark[j])
  32. mx=dis[v=j]; //%%%
  33. if(mx==inf) break;
  34. mark[v]=;
  35. for(int j=;j<n;j++)
  36. {
  37. if(!mark[j]&&(dis[j]>dis[v]+mp[v][j]))
  38. dis[j]=dis[v]+mp[v][j];
  39. }
  40. }
  41. if(dis[t]>=inf) return -;
  42. return dis[t];
  43. }
  44. int main()
  45. {
  46. while(~scanf("%d%d",&n,&m)&&(n+m))
  47. {
  48. for(int i=;i<n;i++)
  49. {
  50. for(int j=;j<n;j++)
  51. {
  52. if(i==j)mp[i][j]=;
  53. else mp[i][j]=inf;
  54. }
  55. }
  56. mem(mark);
  57. int l,r,x;
  58. for(int i=;i<=m;i++)
  59. {
  60. scanf("%d%d%d",&l,&r,&x);
  61. if(mp[l][r]>x) mp[l][r]=mp[r][l]=x;
  62. }
  63. int s,t;
  64. scanf("%d%d",&s,&t);
  65.  
  66. printf("%d\n",dijkstra(s,t));
  67. }
  68. return ;
  69. }

最短路径---dijkstra算法模板的更多相关文章

  1. 最短路径Dijkstra算法模板题---洛谷P3371 【模板】单源最短路径(弱化版)

    题目背景 本题测试数据为随机数据,在考试中可能会出现构造数据让SPFA不通过,如有需要请移步 P4779. 题目描述 如题,给出一个有向图,请输出从某一点出发到所有点的最短路径长度. 输入格式 第一行 ...

  2. poj2387 Til the Cows Come Home 最短路径dijkstra算法

    Description Bessie is out in the field and wants to get back to the barn to get as much sleep as pos ...

  3. 网络最短路径Dijkstra算法

    最近在学习算法,看到有人写过的这样一个算法,我决定摘抄过来作为我的学习笔记: <span style="font-size:18px;">/* * File: shor ...

  4. 单源最短路径Dijkstra算法,多源最短路径Floyd算法

    1.单源最短路径 (1)无权图的单源最短路径 /*无权单源最短路径*/ void UnWeighted(LGraph Graph, Vertex S) { std::queue<Vertex&g ...

  5. 最短路径-Dijkstra算法与Floyd算法

    一.最短路径 ①在非网图中,最短路径是指两顶点之间经历的边数最少的路径. AE:1    ADE:2   ADCE:3   ABCE:3 ②在网图中,最短路径是指两顶点之间经历的边上权值之和最短的路径 ...

  6. 数据结构实验之图论七:驴友计划 ( 最短路径 Dijkstra 算法 )

    数据结构实验之图论七:驴友计划 Time Limit: 1000 ms           Memory Limit: 65536 KiB Submit Statistic Discuss Probl ...

  7. 最短路径——Dijkstra算法以及二叉堆优化(含证明)

    一般最短路径算法习惯性的分为两种:单源最短路径算法和全顶点之间最短路径.前者是计算出从一个点出发,到达所有其余可到达顶点的距离.后者是计算出图中所有点之间的路径距离. 单源最短路径 Dijkstra算 ...

  8. 有向网络(带权的有向图)的最短路径Dijkstra算法

    什么是最短路径? 单源最短路径(所谓单源最短路径就是只指定一个顶点,最短路径是指其他顶点和这个顶点之间的路径的权值的最小值) 什么是最短路径问题? 给定一带权图,图中每条边的权值是非负的,代表着两顶点 ...

  9. Python数据结构与算法之图的最短路径(Dijkstra算法)完整实例

    本文实例讲述了Python数据结构与算法之图的最短路径(Dijkstra算法).分享给大家供大家参考,具体如下: # coding:utf-8 # Dijkstra算法--通过边实现松弛 # 指定一个 ...

随机推荐

  1. js根据毫米/厘米算像素px

    <html><meta http-equiv="content-type" content="text/html;charset=utf-8" ...

  2. CentOS7设置ssh服务以及端口修改

    很多时候我们都是通过SSH 服务 来对 Linux 进行操作,而不是直接来操作Linux机器,包括对Linux服务器的操作,因此,设置SSH服务对于学习Linux来说属于必备技能(尤其是运维人员),关 ...

  3. [Reinforcement Learning] Policy Gradient Methods

    上一篇博文的内容整理了我们如何去近似价值函数或者是动作价值函数的方法: \[ V_{\theta}(s)\approx V^{\pi}(s) \\ Q_{\theta}(s)\approx Q^{\p ...

  4. 20155324《网络对抗》Exp1 PC平台逆向破解(5)M

    20155324<网络对抗>Exp1 PC平台逆向破解(5)M 实验目标 本次实践的对象是一个名为~pwn1~的~linux~可执行文件. 该程序正常执行流程是:~main~调用~foo~ ...

  5. Linux-Shell编程之数组操作

    源码 #!/bin/bash str="Array - Demo Shell"; echo ${#str} #求字符串長度 #定義 arr=('a' 'b' 'c' 'd' 'e' ...

  6. rsync + sersync 实现实时数据同步

    一.环境: 主机1:youzhuan-bak     centos 7.2 主机2:youzhuan-online   centos 7.2 二.部署过程: youzhuan-bak : [root@ ...

  7. kaldi通用底层矩阵运算库——CBLAS

    matrix/cblas-wrappers.h 该头文件对CBLAS与CLAPACK的接口进行了简单的封装(将不同数据类型的多个接口封装为一个). 比如 cblas_scopy和cblas_dcopy ...

  8. Java多线程访问共享资源类及类之间关系设计

    1.涉及的类 多线程类.共享资源存储类 2.类之间的关系 (1)共享资源存储类作为线程类的全局成员变量,在线程初始化时,通过setter或者构造注入(当然此处是同一个共享资源类对象),实现多个线程共享 ...

  9. error while loading shared libraries: libopencv_core.so.3.4: cannot open shared object file: No such file or directory

    1. 将CMakeLists.txt 文件中 find_package(OpenCV REQURED)补充完整为带版本号的:find_package(OpenCV 2.4.9 REQURED) 2. ...

  10. 安装版本( 相关关系 Vue SSR 指定版本)

    1. 关于 brew mac包管理器 终端安装 /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebr ...