最短路spaf及dijkstra模板
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模板的更多相关文章
- HDU-2544 最短路 Dijkstra模板题
题目链接:https://vjudge.net/problem/HDU-2544 题意: 题目要求找到节点1到节点n之间的一条最短路 分析: Dijkstra模板题 单源最短路径,可以用dijkstr ...
- 单源最短路——Dijkstra模板
算法思想: 类似最小生成树的贪心算法,从起点 v0 每次新拓展一个距离最小的点,再以这个点为中间点,更新起点到其他点的距离. 算法实现: 需要定义两个一维数组:①vis[ i ] 表示是否从源点到顶点 ...
- 【hdu 2544最短路】【Dijkstra算法模板题】
Dijkstra算法 分析 Dijkstra算法适用于边权为正的情况.它可用于计算正权图上的单源最短路( Single-Source Shortest Paths, SSSP) , 即从单个源点出发, ...
- HDU 2544 最短路 【Dijkstra模板题】
传送门:http://acm.hdu.edu.cn/showproblem.php?pid=2544 思路:最短路的模板题 Dijkstra 算法是一种类似于贪心的算法,步骤如下: 1.当到一个点时, ...
- Dijkstra 模板 最短路
转载请注明出处:http://blog.csdn.net/u012860063?viewmode=contents ------------------------------------------ ...
- HDU 2544最短路dijkstra模板题
最短路 Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submis ...
- uva 11374 最短路+记录路径 dijkstra最短路模板
UVA - 11374 Airport Express Time Limit:1000MS Memory Limit:Unknown 64bit IO Format:%lld & %l ...
- 最短路(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 ...
- HDU 2544 - 最短路 - [堆优化dijkstra][最短路模板题]
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2544 Time Limit: 5000/1000 MS (Java/Others) Memory Li ...
随机推荐
- 离散化模板题 II ——重复元素离散化后的数字不相同
离散化模板题 II --重复元素离散化后的数字不相同 题目描述 现有数列A1, A2, ⋯, An,数列中可能有重复元素. 现在要求输出该数列的离散化数列,重复元素离散化后的数字不相同. 输入 第一行 ...
- Android View post 方法
解析View.post方法.分析一下这个方法的流程. 说起post方法,我们很容易联想到Handler的post方法,都是接收一个Runnable对象.那么这两个方法有啥不同呢? Handler的po ...
- PHP中的日期相关函数(三)
之前我们已经介绍过了 PHP 的一些相关的日期操作对象,今天我们就来学习剩下的那些面向过程的使用方式.当然,如果是和 DateTime 类中相似的方法我们就不再进行介绍了.另外,Date() 和 ti ...
- mysql将数据导入到另外一张操作
insert into ydcq_member_class (ClassId,signcount,UserId) select 64,2,`员工编号` from `学员名单`
- nginx 常用x代码
1.nginx 禁止ip直接访问,只允许域名访问,直接在.conf文件里 server上面再添加一个server 代码,不可以写同一个server里: server { listen 80 defau ...
- python3中文乱码解决方法
解决方法: 修改pycharm配置: File->Settings->Editor->File encodings 把Global encoding设置成GBK即可
- prometheus+grafana实现服务监控
一.安装prometheus: 下载相应的版本 :https://prometheus.io/download/ 解压: Linux:tar -zxvf XXX.tar.gz windows:直接下载 ...
- Java面试总结 Boss沟通过:500+,面试:20,已投简历130+
1 概述 1 介绍 最近换工作,对最近面试的过程进行总结,总结每个公司的面试流程和问到的面试题,记录自己,也供大家参考. 我是一名Java开发,工作经验10年,所以面试一名高级Java开发工程师. 简 ...
- python3使用imaplib获取邮件
imaplib 获取邮件,email解析邮件config文件中存有路径 1 # config.py 2 FILE_PATH_PREFIX = os.getcwd() + '/static/' 3 FI ...
- P6672-[清华集训2016]你的生命已如风中残烛【结论】
正题 题目链接:https://www.luogu.com.cn/problem/P6672 题目大意 长度为\(m\)的序列\(a\),有\(n\)个数字不是\(0\),其他\(m-n\)个是\(0 ...