1.  
  1. SPFA的模版
  2. #include<bits/stdc++.h>
  3. using namespace std;
  4. queue <int> q;
  5. typedef pair <int , int> PII;
  6. vector <PII> s[];
  7. int m,n,x,y,val,dian[],zou[],rankk,zhong;
  8. main(){
  9. scanf("%d%d",&n,&m);//n个点,m条边;
  10. for(int i=;i<=m;i++)//存边,是无向图;
  11. {
  12. scanf("%d%d%d",&x,&y,&val);
  13. s[x].push_back(PII(y,val));
  14. s[y].push_back(PII(x,val));
  15. }
  16. memset(dian,,sizeof(dian));
  17. dian[]=;
  18. q.push();
  19. zou[]=;
  20. while(!q.empty())
  21. {
  22. rankk=q.front();
  23. q.pop();
  24. zou[rankk]=;
  25. for(int i=;i<s[rankk].size();i++)//枚举每一条边,判断是否可以更新;
  26. {
  27. zhong=s[rankk][i].first;
  28. val=s[rankk][i].second;
  29. if(dian[zhong]>dian[rankk]+val)
  30. {
  31. dian[zhong]=dian[rankk]+val;
  32. if(zou[zhong]==)
  33. continue;
  34. q.push(zhong);
  35. zou[zhong]=;
  36. }
  37. }
  38. }
  39. //这样,从1到X的最短距离就存在dian[x]里面的;
  40. }
  1. //迪杰斯特拉的模版
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. struct edge{ //只是一个结构体而已 ;
  4. int rank,val;
  5. };
  6. priority_queue <edge> q; //优先队列,存着结构体;
  7. bool operator <(edge a,edge b) //为优先队列排序
  8. {
  9. return a.val > b.val ;
  10. }
  11. typedef pair <int , int> PII; //第一个INT存着指向的编号,第二个INT存着距离;
  12. vector <PII> s[];
  13. int n,m,x,y,val,zhong,rankk,dian[],zou[];//zou代表有没有走过,点代表从1到x点的距离dian[x];
  14. main(){
  15. scanf("%d%d",&n,&m);//n个点,m条边;
  16. for(int i=;i<=m;i++)//存边,是无向图;
  17. {
  18. scanf("%d%d%d",&x,&y,&val);
  19. s[x].push_back(PII(y,val));
  20. s[y].push_back(PII(x,val));
  21. }
  22. memset(dian,,sizeof(dian));//初始化点为无限大,最好不要用127,小心加起来时爆掉;
  23. edge E;
  24. E.rank = ;
  25. q.push(E); //存入开始点的信息;
  26. zou[] = ;
  27. dian[] = ;
  28. while(!q.empty())
  29. {
  30. rankk=q.top().rank;//队首的点的编号;
  31. q.pop();
  32. if(zou[rankk]==)//判断是否走过 ;
  33. continue;
  34. zou[rankk] = ;
  35. for(int i=;i<s[rankk].size();i++)//枚举每一条边,判断是否可以更新;
  36. {
  37. zhong=s[rankk][i].first;
  38. val=s[rankk][i].second;
  39. if(dian[zhong]>dian[rankk]+val)
  40. {
  41. dian[zhong]=dian[rankk]+val;
  42. edge E;
  43. E.rank = zhong;
  44. E.val = dian[zhong];
  45. q.push(E);//可以更新就重新存入队列;
  46. }
  47. }
  48. }
  49. //这样,从1到X的最短距离就存在dian[x]里面的;
  50. }

写一下SPFA和迪杰斯特拉的模版。。。第一次写博客,有错请提出哦!的更多相关文章

  1. 算法与数据结构(六) 迪杰斯特拉算法的最短路径(Swift版)

    上篇博客我们详细的介绍了两种经典的最小生成树的算法,本篇博客我们就来详细的讲一下最短路径的经典算法----迪杰斯特拉算法.首先我们先聊一下什么是最短路径,这个还是比较好理解的.比如我要从北京到济南,而 ...

  2. 迪杰斯特拉算法——PAT 1003

    本文主要是将我对于我对于迪杰斯特拉算法的理解写出来,同时通过例题来希望能够加深对于算法的理解,其中有错误的地方希望大家指正. 迪杰斯特拉算法 我将这个算法理解成一个局部到整体的算法,这个方法确实越研究 ...

  3. hdu 1874 畅通工程续(迪杰斯特拉优先队列,floyd,spfa)

    畅通工程续 Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Subm ...

  4. 迪杰斯特拉和spfa

    迪杰斯特拉 Dijkstra算法是典型的算法.Dijkstra算法是很有代表性的算法.Dijkstra一般的表述通常有两种方式,一种用永久和临时标号方式,一种是用OPEN, CLOSE表的方式,这里均 ...

  5. C#迪杰斯特拉算法

    C#迪杰斯特拉算法 网上有许多版本的,自己还是写一个理解点 Dijkstra.cs public class Dijkstra { private List<Node> _nodes; p ...

  6. 最短路径之迪杰斯特拉(Dijkstra)算法

    迪杰斯特拉(Dijkstra)算法主要是针对没有负值的有向图,求解其中的单一起点到其他顶点的最短路径算法.本文主要总结迪杰斯特拉(Dijkstra)算法的原理和算法流程,最后通过程序实现在一个带权值的 ...

  7. Dijkstra(迪杰斯特拉)源最短路径 小白说明

    源最短路径 小白说明 Dijkstra算法,书上其实说的很简洁,仔细看,仔细思考是会理解的.但要先理解几条引论和推理. 而自己思考的思路在不需要任何推理只从贪心思路出发,和Dijkstra有所不同,但 ...

  8. dijkstra算法(迪杰斯特拉算法)

    dijkstra算法(迪杰斯特拉算法) 用途:有向图最短路径问题 定义:迪杰斯特拉算法是典型的算法,一般的表述通常有两种方式,这里均采用永久和临时标号的方式,该算法要求图中不存在负权边 用永久和临时标 ...

  9. HDU6166-Senior Pan-Dijkstra迪杰斯特拉算法(添加超源点,超汇点)+二进制划分集合-2017多校Team09

    学长好久之前讲的,本来好久好久之前就要写题解的,一直都没写,懒死_(:з」∠)_ Senior Pan Time Limit: 12000/6000 MS (Java/Others)    Memor ...

随机推荐

  1. 阶段1 语言基础+高级_1-3-Java语言高级_06-File类与IO流_09 序列化流_3_对象的反序列化流_ObjectInputStream

    声明了IO异常,这里还是红色的 转换为Person对象

  2. 阶段1 语言基础+高级_1-3-Java语言高级_1-常用API_1_第5节 String类_1_字符串概述和特点

    在api中查找 java.lang包里面的不用引用

  3. 阶段1 语言基础+高级_1-3-Java语言高级_03-常用API第二部分_第2节 Date类_5_练习_计算出一个人已经出生了多少天

    Alt+回车

  4. Android在WindowManagerService和ActivityManagerService中的Token

    https://upload-images.jianshu.io/upload_images/5688445-6cf0575bb52ccb45.png 1. ActivityRecord中的token ...

  5. 【minicap】基于图像识别的手机端UI自动化测试的截图方式更新

    minicap属于STF框架的一个工具,可以高速截图.同步手机屏幕至浏览器等   为什么用minicap截图: 经过试验,截同一个屏幕的一张图,adb shell screencap速度为2.9秒,而 ...

  6. 001/Go语言构建区块链(mooc)

    1.区块链发展与现状 视频地址:https://www.imooc.com/video/17452 注意: 比特币与以太坊最大的区别在于: 以太坊引入了对图灵完美智能合约的支持,人们可以将任何业务逻辑 ...

  7. Maven系列学习(三)Maven生命周期和插件

    Maven生命周期和插件 Maven另外的两个核心概念就是生命周期和插件,Maven的生命周期都是抽象的,其实实际行为都是由插件来完成的,生命周期和插件两者协同工作 1.生命周期 Maven的生命周期 ...

  8. python函数-基础知识

    一.含义函数是程序内的“小程序” 二.示例 #!/usr/bin/env python #coding:utf-8 def hello(): print('Hello world!') print(' ...

  9. hdu-4292.food(类dining网络流建图)

    Food Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submis ...

  10. Tornado 的核是什么??

    Tornado 的核心是 ioloop 和 iostream 这两个模块,前者提供了一个高效的 I/O 事件循环,后 者则封装了 一个无阻塞的 socket .通过向 ioloop 中添加网络 I/O ...