1. //
  2. // dijkstra妯℃澘.cpp
  3. // algorithm
  4. //
  5. // Created by david.xu on 2018/8/6.
  6. // Copyright 漏 2018骞?david.xu. All rights reserved.
  7. //
  8. //不能有负边权!
  9. #include <stdio.h>
  10. #include <cstdlib>
  11. #include <cstring>
  12. #include <cmath>
  13. #include <iostream>
  14. #include <algorithm>
  15. #include <queue>
  16. #include <vector>
  17. #define maxn 100010
  18. #define pa pair<int,int>
  19.  
  20. using namespace std;
  21.  
  22. int n,m,s,dis[maxn];
  23. bool vis[maxn];
  24.  
  25. priority_queue<pa,vector<pa>,greater<pa> > q;
  26.  
  27. struct edge{
  28. int val,to;
  29. };
  30. vector<edge> e[maxn];
  31.  
  32. void dijkstra()//dis[i] 表示从起点到i的最短距离
  33. {
  34. for(int i=;i<=n;i++)
  35. dis[i]=;
  36. dis[s]=;
  37. q.push(make_pair(, s));
  38. while(!q.empty())
  39. {
  40. int x=q.top().second;
  41. q.pop();
  42. if(vis[x])
  43. continue;
  44. vis[x]=;
  45. for(int i=;i<e[x].size();i++)
  46. {
  47. int y=e[x][i].to;
  48. if(dis[x]+e[x][i].val<dis[y])
  49. {
  50. dis[y]=dis[x]+e[x][i].val;
  51. q.push(make_pair(dis[y], y));
  52. }
  53. }
  54. }
  55. }
  56.  
  57. int main()
  58. {
  59. scanf("%d%d%d",&n,&m,&s);
  60. for(int i=;i<=m;i++)
  61. {
  62. int x,y,z;
  63. scanf("%d%d%d",&x,&y,&z);
  64. edge tmp;
  65. tmp.to=y;
  66. tmp.val=z;
  67. e[x].push_back(tmp);
  68. }
  69. dijkstra();
  70. for(int i=;i<=n;i++)
  71. printf("%d ",dis[i]);
  72. return ;
  73. }

最短路Dijkstra算法模板的更多相关文章

  1. hdu-2544-最短路(dijkstra算法模板)

    题目链接 题意很清晰,入门级题目,适合各种模板,可用dijkstra, floyd, Bellman-ford, spfa Dijkstra链接 Floyd链接 Bellman-Ford链接 SPFA ...

  2. hdu2544 最短路 Dijkstra算法

    最短路(Dijkstra算法模板题) Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Other ...

  3. 最短路径---dijkstra算法模板

    dijkstra算法模板 http://acm.hdu.edu.cn/showproblem.php?pid=1874 #include<stdio.h> #include<stri ...

  4. 单源最短路dijkstra算法&&优化史

    一下午都在学最短路dijkstra算法,总算是优化到了我能达到的水平的最快水准,然后列举一下我的优化历史,顺便总结总结 最朴素算法: 邻接矩阵存边+贪心||dp思想,几乎纯暴力,luoguTLE+ML ...

  5. 最短路Dijkstra算法的一些扩展问题

    最短路Dijkstra算法的一些扩展问题     很早以前写过关于A*求k短路的文章,那时候还不明白为什么还可以把所有点重复的放入堆中,只知道那样求出来的就是对的.知其然不知其所以然是件容易引发伤痛的 ...

  6. 【hdu 2544最短路】【Dijkstra算法模板题】

    Dijkstra算法 分析 Dijkstra算法适用于边权为正的情况.它可用于计算正权图上的单源最短路( Single-Source Shortest Paths, SSSP) , 即从单个源点出发, ...

  7. ACM: HDU 2544 最短路-Dijkstra算法

    HDU 2544最短路 Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Descrip ...

  8. 单源最短路Dijkstra算法——matlab实现

    迪杰斯特拉(Dijkstra)算法是典型最短路径算法,用于计算一个节点到其他节点的最短路径. 它的主要特点是以起始点为中心向外层层扩展(广度优先搜索思想),直到扩展到终点为止. 基本思想 通过Dijk ...

  9. 单源最短路(Dijkstra算法)

    #返回上一级 @Author: 张海拔 @Update: 2015-03-11 @Link: http://www.cnblogs.com/zhanghaiba/p/3514570.html Dijk ...

随机推荐

  1. python编程设计模式之接口类和抽象类

    接口类 """ 接口类 是一种编程设计模式,在python原本没有接口类 借用Java思想创建的一种规范设计模式 支持多继承,进行多方面规范 ""&q ...

  2. navicat primium 12免安装版的解决方式

    https://blog.csdn.net/wanghailong_qd/article/details/85887825 工具————选项 -----环境 会发现是instantclient_10_ ...

  3. H3C 根据主机地址数划分子网

  4. js 中日期2013-08-30或2019-08-24 12:30:00 转换成时间戳,和2019-08-29T02:15:08.000+0000转化为2019-08-29T02:15:08

    js 中日期2019-08-24 或2019-08-24 12:30:00 转换成时间戳 首先将它转成date日期类型,然后获取毫秒形式时间戳 let date=new Date("2019 ...

  5. Javascript中那些你不知道的事之-- false、0、null、undefined和空字符串

    话不多说直接进入主题:(如果有写的不对的地方欢迎指正) 我们先来看看他们的类型分别是什么: typeof类型检测结果 结论:false是布尔类型对象,0是数字类型对象,null是object对象,un ...

  6. 微软软件开发技术二十年回顾-MFC篇

    三. MFC篇 Windows API是面向过程的接口,因此对于当时的编程技术来说,它是完美无缺的.但是,随着人们逐渐使用C++进行Windows程序的开发,迫切需要建立与Windows API的面向 ...

  7. codeforces 1269 E K Integers

    E. K Integers 题目连接:https://codeforces.com/contest/1269/problem/E 题意 给了一个排列p,你每次操作可以交换两个相邻的元素,现在问你最少操 ...

  8. P3810 陌上花开 CDQ分治

    陌上花开 CDQ分治 传送门:https://www.luogu.org/problemnew/show/P3810 题意: \[ 有n 个元素,第 i 个元素有 a_i. b_i. c_i 三个属性 ...

  9. 缓存一致性协议(MESI)

    在目前主流的计算机中,cpu执行计算的主要流程如图所示: 数据加载的流程如下: 1.将程序和数据从硬盘加载到内存中 2.将程序和数据从内存加载到缓存中(目前多三级缓存,数据加载顺序:L3->L2 ...

  10. [译文] 为什么你在 C# 里总是应该使用 "var" 关键字

    [译文] Why You Should Always Use the 'var' Keyword in C# (为什么你总是应该在 C# 里使用 "var" 关键字) Using ...