spaf的双端队列优化:

#include<bits/stdc++.h>
#define ll long long
const ll maxn=210000;
using namespace std;
ll n,m,s,tot,link[maxn],dis[maxn],vis[maxn];
struct bian
{
ll y,v,next;
};
bian a[maxn];
inline void add(ll x,ll y,ll v)
{
a[++tot].y=y;
a[tot].v=v;
a[tot].next=link[x];
link[x]=tot;
}
inline void spaf()
{
memset(dis,127,sizeof(dis));
deque<ll>q;
q.push_front(s);
dis[s]=0;vis[s]=1;
while(!q.empty())
{
ll x=q.front();q.pop_front();vis[x]=0;
for(int i=link[x];i;i=a[i].next)
{
int y=a[i].y;
if(dis[y]>dis[x]+a[i].v)
{
dis[y]=dis[x]+a[i].v;
if(!vis[y])
{
if(!q.size()||dis[y]>dis[q.front()]) q.push_back(y);
else q.push_front(y);
vis[y]=1;
}
}
}
}
}
int main()
{
freopen("1.in","r",stdin);
cin>>n>>m>>s;
for(int i=1;i<=m;i++)
{
ll x,y,v;
cin>>x>>y>>v;
add(x,y,v);
}
spaf();
for(int i=1;i<=n;i++) cout<<dis[i]<<' ';
return 0;
}

dijkstra:

inline void dij()
{
memset(dis,127,sizeof(dis));
dis[1]=0;
q.push(make_pair(0,1));
while(!q.empty())
{
ll x=q.top().second;q.pop();
if(vis[x]) continue;
vis[x]=1;
for(int i=link[x];i;i=a[i].next)
{
ll y=a[i].y;
if(dis[y]>dis[x]+a[i].v)
{
dis[y]=dis[x]+a[i].v;
q.push(make_pair(-dis[y],y));
}
}
}
}

用dijkstra的最短路计数:

inline void dij()
{
memset(dis,127,sizeof(dis));
c[1]=1;dis[1]=0;
q.push(make_pair(0,1));
while(!q.empty())
{
ll x=q.top().second;q.pop();
if(vis[x]) continue;
vis[x]=1;
for(int i=link[x];i;i=a[i].next)
{
ll y=a[i].y;
if(dis[y]==dis[x]+a[i].v) c[y]=c[x]+c[y];
if(dis[y]>dis[x]+a[i].v)
{
dis[y]=dis[x]+a[i].v;
q.push(make_pair(-dis[y],y));
c[y]=c[x];
}
}
}
}

最短路spaf及dijkstra模板的更多相关文章

  1. HDU-2544 最短路 Dijkstra模板题

    题目链接:https://vjudge.net/problem/HDU-2544 题意: 题目要求找到节点1到节点n之间的一条最短路 分析: Dijkstra模板题 单源最短路径,可以用dijkstr ...

  2. 单源最短路——Dijkstra模板

    算法思想: 类似最小生成树的贪心算法,从起点 v0 每次新拓展一个距离最小的点,再以这个点为中间点,更新起点到其他点的距离. 算法实现: 需要定义两个一维数组:①vis[ i ] 表示是否从源点到顶点 ...

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

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

  4. HDU 2544 最短路 【Dijkstra模板题】

    传送门:http://acm.hdu.edu.cn/showproblem.php?pid=2544 思路:最短路的模板题 Dijkstra 算法是一种类似于贪心的算法,步骤如下: 1.当到一个点时, ...

  5. Dijkstra 模板 最短路

    转载请注明出处:http://blog.csdn.net/u012860063?viewmode=contents ------------------------------------------ ...

  6. HDU 2544最短路dijkstra模板题

    最短路 Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submis ...

  7. uva 11374 最短路+记录路径 dijkstra最短路模板

    UVA - 11374 Airport Express Time Limit:1000MS   Memory Limit:Unknown   64bit IO Format:%lld & %l ...

  8. 最短路(Dijkstra模板题)

    就不写题目链接了 Sample Input 5 5 点个数a,边个数b 1 2 20 点,点,权值 2 3 30 3 4 20 4 5 20 1 5 100 求出1到a的最短距离 Sample Out ...

  9. HDU 2544 - 最短路 - [堆优化dijkstra][最短路模板题]

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2544 Time Limit: 5000/1000 MS (Java/Others) Memory Li ...

随机推荐

  1. TP5 windows中执行定时任务

    1 首先先写个自定义命令文件 比如 Test 2 在网站根目录下建立文件 crond.bat ,内容:(把你在cmd上操作流程写一遍) D: cd workspace\wamp\tp5 D:\PHPW ...

  2. Java基础系列(31)- 可变参数

    可变参数 JDK1.5开始,Java支持传递同类型的可变参数给一个方法 在方法声明中,在指定参数类型后加一个省略号(...) 一个方法中只能指定一个可变参数,它必须是方法的最后一个参数.任何普通的参数 ...

  3. django 常用教程网址

    第一:url中反向解析教程网址 https://docs.djangoproject.com/zh-hans/2.2/ref/templates/builtins/#url

  4. python 文件夹扫描

    扫描指定文件夹下的文件.或者匹配指定后缀和前缀的函数. 假设要扫描指定文件夹下的文件,包含子文件夹,调用scan_files("/export/home/test/") 假设要扫描 ...

  5. [转载]使用postgresql安装wordpress

    1. 环境安装sudo apt-get install apache2sudo apt-get install postgresql-9.1sudo apt-get install php5sudo ...

  6. docker network 参数

    一. 格式 docker network COMMAND 二.COMMAND 讲解 2.1 .docker network connect 格式 docker network connect [OPT ...

  7. 系统设计实践(03)- Instagram社交服务

    前言 系统设计实践篇的文章将会根据<系统设计面试的万金油>为前置模板,讲解数十个常见系统的设计思路. 前置阅读: <系统设计面试的万金油> 系统设计实践(01) - 短链服务 ...

  8. easy-rule 学习

    Easyrule是个规则引擎,类似于drools,我们来熟悉一下这个东西 [ ] 一个简单实例规则,这个规则会被一直触发,然后行为是打印helloWorld @Rule(name="hell ...

  9. Python标准库模块之heapq – 堆构造

    Python标准库模块之heapq – 堆构造 读前福利:几百本经典书籍https://www.johngo689.com/2158/ 原文链接:https://www.johngo689.com/2 ...

  10. 《手把手教你》系列技巧篇(三十)-java+ selenium自动化测试- Actions的相关操作下篇(详解教程)

    1.简介 本文主要介绍两个在测试过程中可能会用到的功能:Actions类中的拖拽操作和Actions类中的划取字段操作.例如:需要在一堆log字符中随机划取一段文字,然后右键选择摘取功能. 2.拖拽操 ...