1. /* bzoj 2763 SPFA小优化 循环队列+SLF 顺面改掉自己之前手打qeueu的坏毛病*/
  2. #include<iostream>
  3. #include<cstring>
  4. #include<cstdio>
  5. #define mk make pair
  6. #define maxn 2000010
  7. #define N 2000000
  8. using namespace std;
  9. int n,m,k,s,t,num,hea[maxn],dis[maxn],c[maxn];
  10. int x[maxn],y[maxn],z[maxn],ans=0xfffffff;
  11. int q[maxn],head,tail;
  12. bool f[maxn];
  13. struct node
  14. {
  15. int u,v,pre,t;
  16. }e[maxn];
  17. void Add(int from,int to,int Dis)
  18. {
  19. for(int i=hea[from];i;i=e[i].pre)
  20. if(e[i].v==to)
  21. {
  22. e[i].t=min(e[i].t,Dis);
  23. return;
  24. }
  25. num++;
  26. e[num].u=from;
  27. e[num].v=to;
  28. e[num].t=Dis;
  29. e[num].pre=hea[from];
  30. hea[from]=num;
  31. }
  32. void SPFA(int x)
  33. {
  34. memset(dis,/,sizeof(dis));
  35. q[tail++]=x;f[x]=;dis[x]=;
  36. while(head!=tail)
  37. {
  38. int k=q[head++];f[k]=;
  39. if(head>N)head=;//循环队列
  40. for(int i=hea[k];i;i=e[i].pre)
  41. {
  42. int v=e[i].v;
  43. if(dis[v]>dis[k]+e[i].t)
  44. {
  45. dis[v]=dis[k]+e[i].t;
  46. if(f[v]==)
  47. {
  48. if(dis[v]<dis[q[head]]){//SLF
  49. if(--head<)head=N-;
  50. q[head]=v;
  51. }
  52. else {
  53. q[tail++]=v;
  54. if(tail>N)tail=;
  55. }
  56. }
  57. }
  58. }
  59. }
  60. }
  61. int main()
  62. {
  63. scanf("%d%d%d%d%d",&n,&m,&k,&s,&t);
  64. s++;t++;n=n+n*k;
  65. for(int i=;i<=m;i++)
  66. scanf("%d%d%d",&x[i],&y[i],&z[i]),x[i]++,y[i]++;
  67. for(int i=;i<=m;i++)
  68. for(int j=;j<=k+;j++)
  69. {
  70. Add((x[i]-)*(k+)+j,(y[i]-)*(k+)+j,z[i]);
  71. Add((y[i]-)*(k+)+j,(x[i]-)*(k+)+j,z[i]);
  72. if(j<=k)
  73. {
  74. Add((x[i]-)*(k+)+j,(y[i]-)*(k+)+j+,);
  75. Add((y[i]-)*(k+)+j,(x[i]-)*(k+)+j+,);
  76. }
  77. }
  78. SPFA((s-)*(k+)+);
  79. for(int j=;j<=k+;j++)
  80. ans=min(ans,dis[(t-)*(k+)+j]);
  81. printf("%d\n",ans);
  82. return ;
  83. }

SPFA 小优化*2的更多相关文章

  1. SPFA的小优化

    标签:闲扯 SPFA的小优化 1. 向队尾加入元素时,如果它比对首还优,就把把它直接和队首交换. 拿一个双端队列来实现 (手写 , head ,tail   STLdeque亲测及其慢) 这个小优化其 ...

  2. 【最短路径】 SPFA算法优化

    首先先明确一个问题,SPFA是什么?(不会看什么看,一边学去,传送门),SPFA是bellman-ford的队列优化版本,只有在国内才流行SPFA这个名字,大多数人就只知道SPFA就是一个顶尖的高效算 ...

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

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

  4. 缓存 Array.length 是老生常谈的小优化

    问题 缓存 Array.length 是老生常谈的小优化. // 不缓存 for (var i = 0; i < arr.length; i++) { ... } // 缓存 var len = ...

  5. HDU 1535 Invitation Cards(SPFA,及其优化)

    题意: 有编号1-P的站点, 有Q条公交车路线,公交车路线只从一个起点站直接到达终点站,是单向的,每条路线有它自己的车费. 有P个人早上从1出发,他们要到达每一个公交站点, 然后到了晚上再返回点1. ...

  6. [MySQL5.6] 最近对group commit的小优化

    [MySQL5.6] 最近对group commit的小优化 http://www.tuicool.com/articles/rEZr2q 最近花了一些时间在做MySQL Group Commit的优 ...

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

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

  8. SPFA队列优化

    spfa队列优化(用来求最短路) 实现方法: 1.存入图.可以使用链式前向星或者vocter. 2.开一个队列,先将开始的节点放入. 3.每次从队列中取出一个节点X,遍历与X相通的Y节点,查询比对   ...

  9. SPFA小总结

    关于spfa 知识点 原始版 ---裸 应用: 一.判负环 两种方法 1.跑单源点bfs,如果某一个点入队了n-1次,存在 2.对于每个点dfs,如果此源点反被其他点更新,存在 证明:点i作为源点,d ...

随机推荐

  1. wndows 7 Wifi热点

    2016年09月13日 14時52分 wanglinqiang整理 Step1 cmd.exe(管理员身份运行) Step2 命令行输入[netsh wlan set hostednetwork mo ...

  2. jQuery遍历对象、数组、集合实例

    1.jquery 遍历对象 复制代码代码如下:   <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" ...

  3. PHP 7.0 安装使用与性能监测!

    PHP 7.0发布,网上关于新版的介绍很多,介于 7.0 在正式发布之前已经发过若干个 Beta.8个 RC,应该不会出现重大问题.今日我将一台机器升级至 PHP 7.0 并将有关信息记录如下. 本人 ...

  4. Android 两个Activity进行数据传送 发送

    Activity1:: Intent intent= new Intent(this, OtherActivity.class); String name = "heyiyong" ...

  5. 一个QT 3D转动控件

    其实说到底就是不停的截图,做出的幻觉.联想起360拖动图片,也是合并图片做出的效果,可见的对GUI来说图片是一切,是最根本的解决一切问题的办法,编程仅是辅助实现手段而已,我要记住这一点. .h文件 # ...

  6. LeetCode解题报告:Binary Tree Postorder Traversal

    Given a binary tree, return the postorder traversal of its nodes' values. For example:Given binary t ...

  7. perl 获取虚拟机信息

    [root@master ~]# cat simple_flow.pl ! /usr/bin/perl -w use strict; use warnings; 导入 vSphere SDK for ...

  8. 深入浅出Node.js (9) - 玩转进程

    9.1 服务模型的变迁 9.1.1 石器时代:同步 9.1.2 青铜时代:复制进程 9.1.3 白银时代:多线程 9.1.4 黄金时代:事件驱动 9.2 多进程架构 9.2.1 创建子进程 9.2.2 ...

  9. rspec学习02

    元数据 RSpec-core存储元数据哈希每实例和组,其中包含他们的描述,声明的位置等等,这个hash控制很多RSpec核心的功能,包括输出格式化程序(访问描述和位置),和before,after钩子 ...

  10. poj 2253 Frogger【最小生成树变形】【kruskal】

    Frogger Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 30427   Accepted: 9806 Descript ...