SPFA ----模板 O(kE) (k一般不超过2)
原理:若一个点入队的次数超过顶点数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)相关推荐
- 图论-最短路径--3、SPFA算法O(kE)
SPFA算法O(kE) 主要思想是: 初始时将起点加入队列.每次从队列中取出一个元素,并对所有与它相邻的点进行修改,若某个相邻的点修改成功,则将其入队.直到队列为空时算法结束. 这个算 ...
- SPFA算法O(kE)
SPFA算法O(kE) Dijkstra和Floyed是不断的试点.Dijkstra试最优点,Floyed试所有点. Bellman-Ford和SPFA是不断的试边.Bellman-Ford是盲目的试 ...
- 【luogu P5903】【模板】树上 k 级祖先(长链剖分)
[模板]树上 k 级祖先 题目链接:luogu P5903 题目大意 给你一棵树,要你在线 O(1) 求一个点的 k 级祖先. 思路 这个我们可以用长链剖分来做,从而可以做到预处理 O ( n log ...
- 图论--最短路--SPFA模板(能过题,真没错的模板)
[ACM常用模板合集] #include<iostream> #include<queue> #include<algorithm> #include<set ...
- EMLOG全站ajax的主题模板 Faded最终k源版本
介绍: 1.全站ajax 2.自适应 3.独立页面: 留言(inc/contact) 归档(inc/archivers) 标签(inc/tags) 链接(inc/links) 图片(inc/water ...
- spfa 模板复习 hicocoder 1093
时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 万圣节的晚上,小Hi和小Ho在吃过晚饭之后,来到了一个巨大的鬼屋! 鬼屋中一共有N个地点,分别编号为1..N,这N个地点之 ...
- #46-【SPFA】MLH的一天(SPFA模板题)
题目描述 一天,体格健壮的MLH(什么鬼)又开始了马拉松的锻炼,可是有一天MLH跑得太远了,回去要很长的一段时间.他要从第1个路口走回第n个路口.他找到了你,求你帮他找到最快的路径,使他可以最快的回到 ...
- hdu 1874 畅通工程续(模板题 spfa floyd)
题目:http://acm.hdu.edu.cn/showproblem.php?pid=1874 spfa 模板 1 #include<iostream> 2 #include<s ...
- 第K短路模板【POJ2449 / 洛谷2483 / BZOJ1975 / HDU6181】
1.到底如何求k短路的? 我们考虑,要求k短路,要先求出最短路/次短路/第三短路--/第(k-1)短路,然后访问到第k短路. 接下来的方法就是如此操作的. 2.f(x)的意义? 我们得到的f(x)更小 ...
最新文章
- 游戏行业两大核心问题:数据挖掘与安全
- ASP.NET MVC中使用FluentValidation验证实体
- 三维重建:深度传感技术的中外差异
- 用Telnet 来用smtp发邮件。。 send mail by SMTP server
- 未来教育计算机二级第一套ppt解析,计算机二级未来教育PPT部分答案
- mysql 删除process_MySQL中Alter table 你不知道的性能问题
- 让你30分钟快速掌握vue 3
- day9 集合基础命令
- 光照强度曲线图android,有关光合作用的曲线图的分析(一) - xyz的日志 - 网易博客...
- MySQL硬件软件中断_mysql 服务突然中断
- 错误:“应用程序无法启动,因为应用程序的并行配置不正确。请参阅应用程序事件日志,或使用命令行sxstrace.exe工具” 的解决
- Python爬取新浪足球数据(以中超为例)
- 微信小程序014租房-房屋租赁合同系统
- 【jmeter性能测试】模拟多个IP同时登录
- srand和rand函数使用
- 推荐几款实现内网穿透的实用工具(转载)
- Go : const rotates恒定旋转(附完整源码)
- asp.net 引入html文件路径问题,asp.net 网站获取一个文件或文件夹的绝对路径,使用方法Server.MapPath(项目根目下虚拟文件路径)实现...
- 《大数据时代》-[英]维克托.迈尔-舍恩伯格 肯尼斯.库克耶
- 《信号与系统学习笔记》—周期信号的博里叶级数表示(一)
热门文章
- MMKV_微信MMKV源码分析(一) | 整体流程
- go 协程和协程通信
- 双稳态电路的两个稳定状态是什么_电子电度表磁保持继电器里面是什么样呢?...
- qt 背景和控件布局_Qt编写自定义控件26-平铺背景控件
- 【Flink】This YARN version does not support getSchedulerResourceTypes
- 【算法】荷兰国旗问题
- 95-38-040-Buffer-AbstractReferenceCountedByteBuf引用计数
- 【Elasticsearch】需要监控的 10 大 Elasticsearch 指标
- 【Java】5 个刁钻的 String 面试题
- 60-320-040-使用-去重-HyperLogLog 去重计数