SPFA
Lazer2001
天涯何处无芳草
只是白兔寻不到
展开
-
[图论] SPFA + SLF优化
大家都很强, 可与之共勉。大致需要一个双向队列deque。 若待更新(正在松弛)的点,已被更新,则比较它与队首元素的dis[]大小, 如果小, 就加到队首, 反之加到队尾。但是, 注意队为空时, 调用不了q.front()所以应该特判。代码如下(我的图论代码略微有毒)#include "queue" #include "cstdio" #include "cstring"#define edges原创 2017-03-24 10:31:47 · 413 阅读 · 0 评论 -
题解BZOJ-2118 图论 SPFA + SLE 最短路 数论
先来分析一下吧,我们在这些a里任取一个ai,表示为k,那么这个B%k肯定是在0–k-1之间的,如果一个B满足条件,这个B%k=d,那么(B+k)%k也肯定为d,那其实就是说,只要我们能找到,%k=d的,且满足条件的最小的B,在一直往上加k,直到加到r为止,能有多少个B,(这些B都是符合条件的),就得到了B%k=d所有的可能,在枚举不同的d,累加起来,不就是0–r内全部可能的B值了嘛。同理,0–l-1原创 2017-03-24 16:02:55 · 490 阅读 · 0 评论 -
题解 BZOJ-1295 SCOI2009 SPFA最短路
大家都很强, 可与之共勉。题面: windy有一块矩形土地,被分为 N*M 块 1*1 的小格子。 有的格子含有障碍物。 如果从格子A可以走到格子B,那么两个格子的距离就为两个格子中心的欧几里德距离。 如果从格子A不可以走到格子B,就没有距离。 如果格子X和格子Y有公共边,并且X和Y均不含有障碍物,就可以从X走到Y。 如果windy可以移走T块障碍物,求所有格子间的最大距离。 保证移走T块障碍物以原创 2017-03-26 21:07:30 · 722 阅读 · 0 评论 -
省选集训 一道很水(Keng) 的SPFA
Input file: drive.in Output file: drive.out Time limit: 2 second 工头cky 最近开了一家贸易公司,开始经商。作为cky 的忠实小弟,jyb 当了cky 老总的司机。一天晚上, cky 突然找到了一个新的客户,所以第二天一早要急着从成都去上海谈生意(设全国一共有n 个城市, 成都 编号为1,上海编号为n),城市之间有高速公路,原创 2017-04-03 21:16:00 · 417 阅读 · 0 评论 -
BZOJ1715 SPFA 浅谈图论之负环的多重化判定
大家都很强, 可与之共勉 。我们拿BZOJ1715做一个例子。 题目很简单,就是要判是否存在负环。 注意加边的时候要正边权加双向边。主要探讨一下几种写法的各自优秀之处BFS版:速度随机化起点后在72ms左右判入队次数是否大于n次 如果是,则存在负环/************************************************************** Proble原创 2017-10-10 19:20:08 · 453 阅读 · 0 评论 -
LOJ6009「网络流 24 题 - 10」软件补丁 最小代价转移 SPFA状态压缩
大家都很强, 可与之共勉 。题意: 不好概括啊 题解: 发现nn很小,于是状态压缩。看是否能够到00这个状态,跑最短路就可以了。 LOJ越来越慢了# include <bits/stdc++.h>template < class T > inline bool chkmin ( T& d, const T& x ) { return d > x ? ( d = x ), 1原创 2017-12-07 17:40:31 · 341 阅读 · 0 评论