SPFA的模版
#include<bits/stdc++.h>
using namespace std;
queue <int> q;
typedef pair <int , int> PII;
vector <PII> s[];
int m,n,x,y,val,dian[],zou[],rankk,zhong;
main(){
scanf("%d%d",&n,&m);//n个点,m条边;
for(int i=;i<=m;i++)//存边,是无向图;
{
scanf("%d%d%d",&x,&y,&val);
s[x].push_back(PII(y,val));
s[y].push_back(PII(x,val));
}
memset(dian,,sizeof(dian));
dian[]=;
q.push();
zou[]=;
while(!q.empty())
{
rankk=q.front();
q.pop();
zou[rankk]=;
for(int i=;i<s[rankk].size();i++)//枚举每一条边,判断是否可以更新;
{
zhong=s[rankk][i].first;
val=s[rankk][i].second;
if(dian[zhong]>dian[rankk]+val)
{
dian[zhong]=dian[rankk]+val;
if(zou[zhong]==)
continue;
q.push(zhong);
zou[zhong]=;
}
}
}
//这样,从1到X的最短距离就存在dian[x]里面的;
}
//迪杰斯特拉的模版
#include<bits/stdc++.h>
using namespace std;
struct edge{ //只是一个结构体而已 ;
int rank,val;
};
priority_queue <edge> q; //优先队列,存着结构体;
bool operator <(edge a,edge b) //为优先队列排序
{
return a.val > b.val ;
}
typedef pair <int , int> PII; //第一个INT存着指向的编号,第二个INT存着距离;
vector <PII> s[];
int n,m,x,y,val,zhong,rankk,dian[],zou[];//zou代表有没有走过,点代表从1到x点的距离dian[x];
main(){
scanf("%d%d",&n,&m);//n个点,m条边;
for(int i=;i<=m;i++)//存边,是无向图;
{
scanf("%d%d%d",&x,&y,&val);
s[x].push_back(PII(y,val));
s[y].push_back(PII(x,val));
}
memset(dian,,sizeof(dian));//初始化点为无限大,最好不要用127,小心加起来时爆掉;
edge E;
E.rank = ;
q.push(E); //存入开始点的信息;
zou[] = ;
dian[] = ;
while(!q.empty())
{
rankk=q.top().rank;//队首的点的编号;
q.pop();
if(zou[rankk]==)//判断是否走过 ;
continue;
zou[rankk] = ;
for(int i=;i<s[rankk].size();i++)//枚举每一条边,判断是否可以更新;
{
zhong=s[rankk][i].first;
val=s[rankk][i].second;
if(dian[zhong]>dian[rankk]+val)
{
dian[zhong]=dian[rankk]+val;
edge E;
E.rank = zhong;
E.val = dian[zhong];
q.push(E);//可以更新就重新存入队列;
}
}
}
//这样,从1到X的最短距离就存在dian[x]里面的;
}

写一下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流_10 打印流_1_打印流_概述和使用

    system.out就是打印流 System的源码里面out参数就是一个PrintStream类型的 例如路径写的是E盘,.没有e盘这个路径就会抛出异常 用println直接写入的就是97    这个 ...

  2. iView 实战系列教程(21课时)_3.iView 实战教程之布局篇(一)

    Grid布局 先了解一下iview的24栅格布局 清理一下App.vue 然后从iview的color里面获取推荐的背景色 我们先渲染栅格 24列,然后再讲解他是一个什么东西: 栅格外面row包裹的, ...

  3. 阶段1 语言基础+高级_1-3-Java语言高级_04-集合_08 Map集合_11_JDK9对集合添加的优化_of方法

    用了of后集合的长度不能再改变!!!!! set不允许有重复元素 所以会抛出异常 重复的数据删掉就不报错. 改变长度 同样会报错. Map的key不允许有重复

  4. linux下vscode备忘

    vscode如何自定义,如何方便地编写c/c++vscode支持vim.sublime快捷键,在设置->keymap可以安装相应插件vscode默认的快捷键支持自定义,打开keyboard sh ...

  5. Echats

    网址:https://www.echartsjs.com 1.特性 ECharts,一个使用 JavaScript 实现的开源可视化库,可以流畅的运行在 PC 和移动设备上,兼容当前绝大部分浏览器(I ...

  6. 12 (H5*) JS第二天 流程控制:顺序结构、分支结构、循环结构

    目录 1:一元运算符 2:流程控制 3:分支之if语句 4:分支之if-else语句 5:分支语句之三元运算符 6:if和else if语句 7:switch-case语句 8:while循环 9:d ...

  7. python基础-9__import__ 反射和面向对象基础 self 封装 继承(多继承顺序) 多态

    一 反射 python中的反射功能是由以下四个内置函数提供:hasattr.getattr.setattr.delattr,改四个函数分别用于对对象内部执行:检查是否含有某成员.获取成员.设置成员.删 ...

  8. RocketMQ的消息发送及消费

    RocketMQ消息支持的模式: 消息支持的模式分为三种:NormalProducer(普通同步),消息异步发送,OneWay. 消息同步发送: 普通消息的发送和接收在前面已经演示过了,在前面的案例中 ...

  9. mysql 多表查询 以及 concat 、concat_ws和 group_concat

    left join(左联接) 返回包括左表中的所有记录和右表中联结字段相等的记录right join(右联接) 返回包括右表中的所有记录和左表中联结字段相等的记录inner join(等值连接) 只返 ...

  10. (二:NIO系列) Java NIO Buffer

    出处:Java NIO Buffer Buffer是一个抽象类,位于java.nio包中,主要用作缓冲区.Buffer缓冲区本质上是一块可以写入数据,然后可以从中读取数据的内存.这块内存被包装成NIO ...