![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
SPFA算法
Keep_Trying_Go
无
展开
-
HDU3440(差分约束+SPFA算法)
题意:两栋房子之间的最大距离为D,也就是A-B<=D,现在求出最矮和最高房子之间的最大距离思路:差分约束+SPFA算法:当问题可以转化为形如一组 xi‑x’i<=yi 或一组 xi‑x’i>=yi ,求任一满足的可行解的问题时,可以将其转化为最短路/最长路问题。约束条件:A-B<=DA-B>=1条件转化一下:A-B<=DB-A<=-1主义SPFA判断负环的情况:判断有⽆负环:如果某个点进⼊队列的次数超过 N 次则存在负环(SPFA ⽆法处理带原创 2021-04-23 09:52:10 · 152 阅读 · 0 评论 -
HDU1531(差分约束+Bellman_ford)
题意:给出一个序列Si = {aSi, aSi+1, ..., aSi+ni} 和其子序列S = {a1, a2, ..., an};在给出序列的约束条件: aSi + aSi+1 + ... + aSi+ni < ki 或者 aSi + aSi+1 + ... + aSi+ni > ki 。现在给出m行,每一行包含四个数:分别是si, ni, oi, ki,这四个数分别代表序列中第si个数到第si+ni个数大于(gt)或者小于(lt).思路:差分约束+Bellman_ford:当问题可以转化原创 2021-04-23 09:07:35 · 159 阅读 · 0 评论 -
poj3159(差分约束)
题意:其实题目要求的就是这个B-A<=c,所以对应单源最短路径中的d[v]>d[u]+e[u][v]关于差分约束:当问题可以转化为形如一组 xi‑x’i<=yi 或一组 xi‑x’i>=yi ,求任一满足的可行解的问题时,可以将其转化为最短路/最长路问题。注意:求的是两个变量差的最大值,那么需要将所有不等式转变成"<=“的形 式,建图后求最短路;相反,如果需要求的是两个变量差的最小值,那么需要将所有不等式转原创 2021-04-23 09:00:18 · 269 阅读 · 0 评论 -
poj1364(差分约束+Bellman-ford)
题意:给出一个序列Si = {aSi, aSi+1, ..., aSi+ni} 和其子序列S = {a1, a2, ..., an};在给出序列的约束条件: aSi + aSi+1 + ... + aSi+ni < ki 或者 aSi + aSi+1 + ... + aSi+ni > ki 。现在给出m行,每一行包含四个数:分别是si, ni, oi, ki,这四个数分别代表序列中第si个数到第si+ni个数大于(gt)或者小于(lt).思路:差分约束+Bellman_ford:当问题可以转化原创 2021-04-23 08:00:50 · 207 阅读 · 0 评论 -
poj1201(差分约束+SPFA)
看到这道题,其实就是和poj1716是差不多的题意:给出n个闭整数区间[ai,bi]和n个整数C1,.,cn。计算具有区间[ai,bi]的至少ci公共元素的整数集Z的最小大小,对于每一个i=1,2,.,n。思路:差分约束+SPFA:当问题可以转化为形如一组 xi‑x’i<=yi 或一组 xi‑x’i>=yi ,求任一满足的可行解的问题时,可以将其转化为最短路/最长路问题。给出条件:x[b+1]-x[a]>=cix[i+1]-x[i]>=0&&x[i+1]-原创 2021-04-22 23:08:15 · 456 阅读 · 0 评论 -
poj3169(差分约束+SPFA)
题意:FJ有N头牛,这些牛都站在一条直线上等待,但是现在给出了一些条件:1.首先列出哪些牛之间彼此喜欢,以及之间的最大距离,也就是A-B<=X2.随后列出哪些牛之间彼此不喜欢,以及之间的最小距离,也就是A-B<=Y3.[i+1]-[i]>=14.求出1和n之间的尽可能的最大距离思路:采用差分约束+SPFA:当问题可以转化为形如一组 xi‑x’i<=yi 或一组 xi‑x’i>=yi ,求任一满足的可行解的问题时,可以将其转化为最短路/最长路问题。将上式进行转化一下:原创 2021-04-22 22:54:03 · 201 阅读 · 0 评论 -
poj1716(差分约束+SPFA)
题意:整数间隔[a,b],a<b,是以a开头和以b结尾的所有连续整数的集合。在包含至少两个不同整数的集合中找到每个间隔的最小元素数。思路:采用差分约束算法:当问题可以转化为形如一组 xi‑x’i<=yi 或一组 xi‑x’i>=yi ,求任一满足的可行解的问题时,可以将其转化为最短路/最长路问题。题目已经说了在包含至少两个不同整数的集合,则根据差分的思想:x[b+1]-x[a]>=2;x[i+1]-x[i]>=0&&x[i+1]-x[i]<=1原创 2021-04-22 21:21:00 · 165 阅读 · 0 评论 -
poj2387(SPFA算法)
1.建⽴⼀个队列,初始时队列⾥只有起始点,再建⽴⼀个表格记录起始点到所有点的最短路径(该表格的初始值要赋为极⼤值,该点到他本⾝的路径赋为 无穷大)。然后执⾏松弛操作,⽤队列⾥有的点作为起始点去刷新到所有点的最短路,如果刷新成功且被刷新点不在队列中则把该点加⼊到队列最后。重复执⾏直到队列为空。方法一:SPFA算法#include<iostream>#include<algorithm>#include<cmath>#include<cstring>#原创 2021-04-11 08:39:50 · 292 阅读 · 0 评论 -
poj1511(SPFA算法)
1.建⽴⼀个队列,初始时队列⾥只有起始点,再建⽴⼀个表格记录起始点到所有点的最短路径(该表格的初始值要赋为极⼤值,该点到他本⾝的路径赋为 无穷大)。然后执⾏松弛操作,⽤队列⾥有的点作为起始点去刷新到所有点的最短路,如果刷新成功且被刷新点不在队列中则把该点加⼊到队列最后。重复执⾏直到队列为空。线路的规划方式是,每一次往返(即在同一站开始和结束的旅程)通过一个中央检查站站(CCS),每个乘客必须通过包括身体扫描在内的彻底检查。每天支付志愿者旅行费用的最低金额。由题意可知,最低金额的计算规则是:首先是单源点原创 2021-04-11 08:40:01 · 187 阅读 · 0 评论 -
poj3259(SPFA算法)
1.建⽴⼀个队列,初始时队列⾥只有起始点,再建⽴⼀个表格记录起始点到所有点的最短路径(该表格的初始值要赋为极⼤值,该点到他本⾝的路径赋为 无穷大)。然后执⾏松弛操作,⽤队列⾥有的点作为起始点去刷新到所有点的最短路,如果刷新成功且被刷新点不在队列中则把该点加⼊到队列最后。重复执⾏直到队列为空。判断有⽆负环:如果某个点进⼊队列的次数超过 N 次则存在负环(SPFA ⽆法处理带负环的图)方法一:链式前向星的写法#include <iostream>#include <cstdio>原创 2021-04-11 12:53:09 · 329 阅读 · 0 评论 -
HDU2066(SPFA算法)
1.建⽴⼀个队列,初始时队列⾥只有起始点,再建⽴⼀个表格记录起始点到所有点的最短路径(该表格的初始值要赋为极⼤值,该点到他本⾝的路径赋为 无穷大)。然后执⾏松弛操作,⽤队列⾥有的点作为起始点去刷新到所有点的最短路,如果刷新成功且被刷新点不在队列中则把该点加⼊到队列最后。重复执⾏直到队列为空。#include<iostream>#include<algorithm>#include<cmath>#include<cstring>#include&l原创 2021-04-11 12:53:19 · 135 阅读 · 0 评论 -
HDU2112(SPFA算法)
1.建⽴⼀个队列,初始时队列⾥只有起始点,再建⽴⼀个表格记录起始点到所有点的最短路径(该表格的初始值要赋为极⼤值,该点到他本⾝的路径赋为 无穷大)。然后执⾏松弛操作,⽤队列⾥有的点作为起始点去刷新到所有点的最短路,如果刷新成功且被刷新点不在队列中则把该点加⼊到队列最后。重复执⾏直到队列为空。#include<iostream>#include<algorithm>#include<cstring>#include<cmath>#include&l原创 2021-04-12 07:44:35 · 158 阅读 · 0 评论 -
HDU1874(SPFA算法)
1.建⽴⼀个队列,初始时队列⾥只有起始点,再建⽴⼀个表格记录起始点到所有点的最短路径(该表格的初始值要赋为极⼤值,该点到他本⾝的路径赋为 无穷大)。然后执⾏松弛操作,⽤队列⾥有的点作为起始点去刷新到所有点的最短路,如果刷新成功且被刷新点不在队列中则把该点加⼊到队列最后。重复执⾏直到队列为空。判断有⽆负环:如果某个点进⼊队列的次数超过 N 次则存在负环(SPFA ⽆法处理带负环的图)#include<iostream>#include<algorithm>#include&原创 2021-04-12 07:44:44 · 167 阅读 · 0 评论 -
HDU2680(SPFA算法)
1.建⽴⼀个队列,初始时队列⾥只有起始点,再建⽴⼀个表格记录起始点到所有点的最短路径(该表格的初始值要赋为极⼤值,该点到他本⾝的路径赋为 无穷大)。然后执⾏松弛操作,⽤队列⾥有的点作为起始点去刷新到所有点的最短路,如果刷新成功且被刷新点不在队列中则把该点加⼊到队列最后。重复执⾏直到队列为空。判断有⽆负环:如果某个点进⼊队列的次数超过 N 次则存在负环(SPFA ⽆法处理带负环的图)#include <iostream>#include <cstdio>#include &原创 2021-04-12 07:44:51 · 155 阅读 · 0 评论 -
HDU2544(SPFA算法)
是 Bellman-Ford算法 的队列优化算法的别称,通常用于求含负权边的单源最短路径,以及判负权环。SPFA 最坏情况下复杂度和朴素 Bellman-Ford 相同,为 O(VE)。1.建⽴⼀个队列,初始时队列⾥只有起始点,再建⽴⼀个表格记录起始点到所有点的最短路径(该表格的初始值要赋为极⼤值,该点到他本⾝的路径赋为 无穷大)。然后执⾏松弛操作,⽤队列⾥有的点作为起始点去刷新到所有点的最短路,如果刷新成功且被刷新点不在队列中则把该点加⼊到队列最后。重复执⾏直到队列为空。判断有⽆负环:如果某个点进⼊队原创 2021-04-12 07:45:01 · 175 阅读 · 0 评论