/*SPFA算法有两个优化算法 SLF 和 LLL:
SLF:Small Label First 策略,设要加入的节点是j,队首元素为i,若dist(j) < dist(i),则将j插入队首,否则插入队尾。
LLL:Large Label Last 策略,设队首元素为i,每次弹出时进行判断,队列中所有dist值的平均值为x,若dist(i)>x则将i插入到队尾,查找下一元素,直到找到某一i使得dist(i)<=x,则将i出对进行松弛操作。
*/
//小的dis在前
#include<bits/stdc++.h>
using namespace std;int n,m,s;//起点终点开头int u[200005],v[200005],w[200005];
int first[200005],nextt[200005];
int dis[200005];int k2=0;
void make_edge(int a,int b,int c)
{k2++;u[k2]=a;v[k2]=b;w[k2]=c;nextt[k2]=first[a];first[a]=k2;
}void clean()
{int flag=max(n,m);for(int i=1;i<=flag;i++){first[i]=-1;nextt[i]=-1;}for(int i=1;i<=n;i++){if(i==s) dis[i]=0;else dis[i]=1e9;}
}deque<int> q;
int book[200005];int main()
{cin>>n>>m>>s;clean();for(int i=1;i<=m;i++){int a,b,c;cin>>a>>b>>c;make_edge(a,b,c);}q.push_back(s);book[s]=1;while(!q.empty()){int now_node=q.front();q.pop_front();book[now_node]=0;int k=first[now_node];while(k!=-1){if(dis[v[k]]>dis[u[k]]+w[k]){dis[v[k]]=dis[u[k]]+w[k];if(book[v[k]]==0){book[v[k]]=1;if(!q.empty()/*记得判空*/&&dis[v[k]]<dis[q.front()]){q.push_front(v[k]);}else q.push_back(v[k]);}}k=nextt[k];}}for(int i=1;i<=n;i++){if(i==1) cout<<dis[i];else cout<<" "<<dis[i];}cout<<endl;return 0;
} 

转载于:https://www.cnblogs.com/KyleDeng/p/9931443.html

spfa slf优化相关推荐

  1. [BZOJ 2200][Usaco2011 Jan]道路和航线 spfa+SLF优化

    Description Farmer John正在一个新的销售区域对他的牛奶销售方案进行调查.他想把牛奶送到T个城镇 (1 <= T <= 25,000),编号为1T.这些城镇之间通过R条 ...

  2. AcWing 342. 道路与航线 (连通块Dijkstra+拓扑序||spfa+slf优化)

    整理的算法模板:ACM算法模板总结(分类详细版) 农夫约翰正在一个新的销售区域对他的牛奶销售方案进行调查. 他想把牛奶送到T个城镇,编号为1~T. 这些城镇之间通过R条道路 (编号为1到R) 和P条航 ...

  3. 初识费用流 模板(spfa+slf优化) 餐巾计划问题

    今天学习了最小费用最大流,是网络流算法之一.可以对于一个每条边有一个容量和一个费用(即每单位流的消耗)的图指定一个源点和汇点,求在从源点到汇点的流量最大的前提下的最小费用. 这里讲一种最基础也是最好掌 ...

  4. 【BZOJ】4152: [AMPPZ2014]The Captain【SLF优化Spfa】

    4152: [AMPPZ2014]The Captain Time Limit: 20 Sec  Memory Limit: 256 MB Submit: 2107  Solved: 820 [Sub ...

  5. POJ1722二维spfa+优先队列优化

    题意:      给你一个有向图,然后求从起点到终点的最短,但是还有一个限制,就是总花费不能超过k,也就是说每条边上有两个权值,一个是长度,一个是花费,求满足花费的最短长度. 思路:       一开 ...

  6. 道路与航线(spfa+deque优化)

    农夫约翰正在一个新的销售区域对他的牛奶销售方案进行调查. 他想把牛奶送到T个城镇,编号为1~T. 这些城镇之间通过R条道路 (编号为1到R) 和P条航线 (编号为1到P) 连接. 每条道路 i 或者航 ...

  7. hdu4889 spfa(造数据卡spfa

    题目是给了你一个spfa+slf优化的程序,然后,让你造个数据卡掉他, 其实那个slf优化根本不算是优化,只是在某些图上可能会更好,但是可以通过直接构造图将其由原本spfa最坏nm的复杂度卡成2^n复 ...

  8. 【图论】关于邻接表建图

    邻接表 作为一名现役Oier在做过无数图论题目和搜索题目之后,可以说是相当熟悉了,但是今天做的一道题,让我对于邻接表表示直接懵逼,原来在跑最短路的时候还是明白每个数组各自的作用的,然而一旦在其它题目中 ...

  9. Here We Go(relians) Again(HDU 2722)---建图繁琐

    题目链接 题目描述 The Gorelians are a warlike race that travel the universe conquering new worlds as a form ...

  10. SPFA的两个优化:SLF与LLL

    先举出个例题:洛谷P3371 [模板]单源最短路径 一眼扫去:最短路径. spfa不接受反驳... 附上代码: #include<iostream> #include<algorit ...

最新文章

  1. 一个资深技术人的转型之路
  2. Python算法实战系列:栈
  3. 计算机版本号怎么看,怎样查看电脑版本型号,怎样查看电脑版本信息
  4. python支持double吗_python列表理解为double
  5. 用 Python 将微信热文转换成Word文档 | 神级操作
  6. webpack4.x加vue模板文件简单还原vue-cli
  7. (二)nodejs循序渐进-nodejs基本类型和循环条件语法篇(基础篇)
  8. oracle数据库配置助手来初始化参数,使用服务器参数文件(SPFILE)管理初始化参数...
  9. Docker : Docker创建自定义网桥
  10. python算法实验是什么_PCA 算法实验代码(python)
  11. 米4s刷Linux,小米4S刷recovery教程_小米4S第三方recovery下载
  12. 如何用计算机计算社会,五险一金计算器到底该怎么用
  13. 1 Apache启动失败,请检查相关配置 √MySQL5 1已启动 解决方案
  14. a洋发卡网sadnt模板美化
  15. 快手短视频产品分析报告-小白文
  16. python VS matlab: reshape/max/matrix index等方法比较
  17. mstsc连接传输大文件时突然中断
  18. 快速排序,归并排序的递归实现(c++)
  19. 简明Python教程笔记(一)
  20. 机器学习(三):线性模型

热门文章

  1. Caused by: java.lang.ClassNotFoundException: org.springframework.orm.hibernate4.HibernateTemplate
  2. 【shell 脚本】删除/var/log 下的日志
  3. 安装Linux操作系统(RHEL5.0)
  4. USB存储、光驱等外设被禁用了,网络共享被禁用了,还要共享文件怎么办?
  5. Silverlight编译过程
  6. 在社会上闯荡必须要牢记的
  7. Asp.net中的页面乱码的问题
  8. 手动玩转虚拟地址到物理地址转化
  9. SRv6技术课堂(一):SRv6概述
  10. iptables详解 1 -- iptables概念