原理:若一个点入队的次数超过顶点数V,则存在负环;

 1 #include "bits/stdc++.h"
 2
 3 using namespace std;
 4 const int maxN = 200010 ;
 5 struct Edge
 6 {
 7     int    to , next , w ;
 8 } e[ maxN ];
 9
10 int    n,m,cnt,p[ maxN ],Dis[ maxN ];
11 int    In[maxN ];
12 bool    visited[ maxN ];
13
14 void    Add_Edge ( const int x , const int y , const int z )
15 {
16     e[ ++cnt ] . to = y ;
17     e[ cnt ] . next = p[ x ];
18     e[ cnt ] . w = z ;
19     p[ x ] = cnt ;
20     return ;
21 }
22
23 bool    Spfa(const int S)
24 {
25     int    i,t,temp;
26     queue<int>    Q;
27     memset ( visited , 0 , sizeof ( visited ) ) ;
28     memset ( Dis , 0x3f , sizeof ( Dis ) ) ;
29     memset ( In , 0 , sizeof ( In ) ) ;
30
31     Q.push ( S ) ;
32     visited [ S ] = true ;
33     Dis [ S ] = 0 ;
34
35     while( !Q.empty ( ) )
36     {
37         t = Q.front ( ) ;Q.pop ( ) ;visited [ t ] = false ;
38         for( i=p[t] ; i ; i = e[ i ].next )
39         {
40             temp = e[ i ].to ;
41             if( Dis[ temp ] > Dis[ t ] + e[ i ].w )
42             {
43                 Dis[ temp ] =Dis[ t ] + e[ i ].w ;
44                 if( !visited[ temp ] )
45                 {
46                     Q.push(temp);
47                     visited[temp]=true;
48                     if(++In[temp]>n)return false;
49                 }
50             }
51         }
52     }
53     return true;
54 }
55
56 int main ( )
57 {
58     int    S , T ;
59
60     scanf ( "%d%d%d%d" , &n , &m , &S , &T ) ;
61     for(int i=1 ; i<=m ; ++i )
62     {
63         int x , y , _ ;
64         scanf ( "%d%d%d" , &x , &y , &_ ) ;
65         Add_Edge ( x , y , _  ) ;
66     }
67
68     if ( !Spfa ( S ) ) printf ( "FAIL!\n" ) ;
69     else               printf ( "%d\n" , Dis[ T ] ) ;
70
71     return 0;
72 }

转载于:https://www.cnblogs.com/LGJC1314/p/6728856.html

SPFA ----模板 O(kE) (k一般不超过2)相关推荐

  1. 图论-最短路径--3、SPFA算法O(kE)

    SPFA算法O(kE) 主要思想是:     初始时将起点加入队列.每次从队列中取出一个元素,并对所有与它相邻的点进行修改,若某个相邻的点修改成功,则将其入队.直到队列为空时算法结束.     这个算 ...

  2. SPFA算法O(kE)

    SPFA算法O(kE) Dijkstra和Floyed是不断的试点.Dijkstra试最优点,Floyed试所有点. Bellman-Ford和SPFA是不断的试边.Bellman-Ford是盲目的试 ...

  3. 【luogu P5903】【模板】树上 k 级祖先(长链剖分)

    [模板]树上 k 级祖先 题目链接:luogu P5903 题目大意 给你一棵树,要你在线 O(1) 求一个点的 k 级祖先. 思路 这个我们可以用长链剖分来做,从而可以做到预处理 O ( n log ...

  4. 图论--最短路--SPFA模板(能过题,真没错的模板)

    [ACM常用模板合集] #include<iostream> #include<queue> #include<algorithm> #include<set ...

  5. EMLOG全站ajax的主题模板 Faded最终k源版本

    介绍: 1.全站ajax 2.自适应 3.独立页面: 留言(inc/contact) 归档(inc/archivers) 标签(inc/tags) 链接(inc/links) 图片(inc/water ...

  6. spfa 模板复习 hicocoder 1093

    时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 万圣节的晚上,小Hi和小Ho在吃过晚饭之后,来到了一个巨大的鬼屋! 鬼屋中一共有N个地点,分别编号为1..N,这N个地点之 ...

  7. #46-【SPFA】MLH的一天(SPFA模板题)

    题目描述 一天,体格健壮的MLH(什么鬼)又开始了马拉松的锻炼,可是有一天MLH跑得太远了,回去要很长的一段时间.他要从第1个路口走回第n个路口.他找到了你,求你帮他找到最快的路径,使他可以最快的回到 ...

  8. hdu 1874 畅通工程续(模板题 spfa floyd)

    题目:http://acm.hdu.edu.cn/showproblem.php?pid=1874 spfa 模板 1 #include<iostream> 2 #include<s ...

  9. 第K短路模板【POJ2449 / 洛谷2483 / BZOJ1975 / HDU6181】

    1.到底如何求k短路的? 我们考虑,要求k短路,要先求出最短路/次短路/第三短路--/第(k-1)短路,然后访问到第k短路. 接下来的方法就是如此操作的. 2.f(x)的意义? 我们得到的f(x)更小 ...

最新文章

  1. 游戏行业两大核心问题:数据挖掘与安全
  2. ASP.NET MVC中使用FluentValidation验证实体
  3. 三维重建:深度传感技术的中外差异
  4. 用Telnet 来用smtp发邮件。。 send mail by SMTP server
  5. 未来教育计算机二级第一套ppt解析,计算机二级未来教育PPT部分答案
  6. mysql 删除process_MySQL中Alter table 你不知道的性能问题
  7. 让你30分钟快速掌握vue 3
  8. day9 集合基础命令
  9. 光照强度曲线图android,有关光合作用的曲线图的分析(一) - xyz的日志 - 网易博客...
  10. MySQL硬件软件中断_mysql 服务突然中断
  11. 错误:“应用程序无法启动,因为应用程序的并行配置不正确。请参阅应用程序事件日志,或使用命令行sxstrace.exe工具” 的解决
  12. Python爬取新浪足球数据(以中超为例)
  13. 微信小程序014租房-房屋租赁合同系统
  14. 【jmeter性能测试】模拟多个IP同时登录
  15. srand和rand函数使用
  16. 推荐几款实现内网穿透的实用工具(转载)
  17. Go : const rotates恒定旋转(附完整源码)
  18. asp.net 引入html文件路径问题,asp.net 网站获取一个文件或文件夹的绝对路径,使用方法Server.MapPath(项目根目下虚拟文件路径)实现...
  19. 《大数据时代》-[英]维克托.迈尔-舍恩伯格 肯尼斯.库克耶
  20. 《信号与系统学习笔记》—周期信号的博里叶级数表示(一)

热门文章

  1. MMKV_微信MMKV源码分析(一) | 整体流程
  2. go 协程和协程通信
  3. 双稳态电路的两个稳定状态是什么_电子电度表磁保持继电器里面是什么样呢?...
  4. qt 背景和控件布局_Qt编写自定义控件26-平铺背景控件
  5. 【Flink】This YARN version does not support getSchedulerResourceTypes
  6. 【算法】荷兰国旗问题
  7. 95-38-040-Buffer-AbstractReferenceCountedByteBuf引用计数
  8. 【Elasticsearch】需要监控的 10 大 Elasticsearch 指标
  9. 【Java】5 个刁钻的 String 面试题
  10. 60-320-040-使用-去重-HyperLogLog 去重计数