
最短路
zhhx2001
这个作者很懒,什么都没留下…
展开
-
codevs2645(又写了一遍spfa,有注意事项)
#include#include#include#include#include#define inf 0x3f3f3f3fusing namespace std;struct aa{ int to,pre,v;}edge[1000009];int n,m,head[1009],p[1009],tot,dis[1009];bool b[1009];void addedge原创 2016-06-28 15:50:19 · 295 阅读 · 0 评论 -
poj1511(spfa)
题目大意:给出n个点和n条有向边,求所有点到源点1的最短路之和,加上源点1到所有点的最短路之和。到其他点的最短路之和,只需要跑最短路就行,这是个有向图,其他点到这个点的最短路和前面的是不一样的。关于第二问,显然的方法是,每一个点都跑一次最短路。复杂度也是显然不能接受。很巧妙的是,只要我们将所有的边反向连,再跑spfa就是第二问的最短路了。 #include#include#原创 2016-09-04 16:50:16 · 428 阅读 · 0 评论 -
noip2014寻找道路
先用原图建反向边,其中j%2==1的是原图,==2的是反向图先从结束点开始反向bfs找所有可以到达结束点的点在处理出所有出边都是可达终点的点,b【i】=true再正向bfs,直到找到终点,然后结束函数,返回输出ans【t】即可#include#include#include#include#include#include#include#include#includ原创 2016-04-24 14:49:22 · 479 阅读 · 0 评论 -
Catch That Cow 2007年USACO(最短路)
竟然一做最短路就以为是要Dijkstra这题的最短路就是广搜来做的#include#include#include#include#include#include#includeusing namespace std;int n,k;const int maxn=100000;int step[maxn+5];bool hash[maxn+5];//哈希判重,一个原创 2016-05-15 12:26:24 · 414 阅读 · 0 评论 -
第k短路径的学习,及A*算法的初步认识,以及usaco牛跑步,k短路径
http://www.cnblogs.com/technology/archive/2011/05/26/2058842.html把整个过程抽象来看就是这样的:这是在有障碍的二维平面的最短的A*算法思路好像关键在于启发式函数把起始格添加到 "开启列表" do { 寻找开启列表中F值最低的格子, 我们称它为当前格. 把它切换到关闭列表.原创 2016-04-30 11:09:02 · 985 阅读 · 0 评论 -
bzoj4152(神奇的最短路)
经验1:memset不能把数组赋值成1000000这样类似的数,虽然不报错,但是却不会赋值成功,更需要注意!2:utility,priority_queue,pair等常用的stl,必须足够的熟悉,这是c++最重要的优势!3:dijkstra,的复杂度是n log n的,刚开始不知道怎么没有反应过来。。。最最基本思路:考虑每两个点之间连一条边 O(n^2),跑最短路。但是挨原创 2016-08-19 18:31:39 · 437 阅读 · 0 评论 -
poj2387(堆优化dijiskla模版,通过pair写的)
pair真心好写,就是可扩展性不强#include#include#include#include#include#include#define MK(x,y) make_pair(x,y)#define pii pair#define inf 0x3f3f3f3f#define se second#define fi first using namespace std;原创 2016-07-20 16:51:13 · 654 阅读 · 0 评论 -
网络流24题——软件补丁问题(spfa+位运算)
1.用unsigned int表示集合,与int分开2.位运算100万个状态,这种状态之间是可以转移,有转移费用,求原点到终点的最短费用类似,直接最短路搞起#include#include#include#include#include#include#define debug(x) cout<<#x<<"="<<x<<endlusing namespace std;con原创 2016-07-28 15:35:28 · 595 阅读 · 0 评论 -
bzoj1295(spfa+省选所需 的灵活思维)
事实证明。学过的,只要敢想,做出来就只是时间问题,注意思维的灵活性,正常方向既然行不通(省选就不会是正常的),那么可以尝试一下不一样的思维方向会有新的体会关于这一题:它说移掉T块障碍物以后的最大长度,我们可以这样想,如果两个块可以在隔T块障碍物就能到达的话,那么他们就是可以连起来的由此,从每个点出发做一次spfa,算出每个点到这个点经过最少的障碍物的数量,然后统计时枚举所有点对,如原创 2016-07-10 13:11:50 · 778 阅读 · 0 评论 -
bzoj1003(dp+最短路spfa)这才是省选的题
设f[i]为1~i天的最少花费,那么dp[i]=min(cost[1,i],min{dp[j]+cost[j+1,i]+K,1≤ji})cost[i][j]表示一条在 i - j 时段保持畅通的运输路线的最短距离,(当时不能到的点置为b【i】=false)然后就是DP。关键是cost[i][j]直接暴力求出每条边可不可用就可以直接SPFA了,来局昆特牌吗,亲。#includ原创 2016-06-30 17:38:03 · 374 阅读 · 0 评论