
最短路
文章平均质量分 78
sdj222555
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
POJ 3635 Full Tank? 最短路变形
题意:给出一张图,n网上大部分的思路都是类似于dij的那种扩展。首先定义一个二维数组dp。 dp[i][j] 表示走到i点剩余j个单位的汽油时的最小花费然后维护一个优先队列。 每次有两种可扩展的状态,一是加一个单位的油,二是走向邻接点,然后不断的将状态加入优先队列中#include #include #include #include #include #d原创 2012-06-26 15:15:53 · 3348 阅读 · 0 评论 -
POJ 3169 差分约束
首先题目中的隐含条件是d[i] 即d[i + 1] + 0 >= d[i]然后对那ML个条件d[y] - d[x] d[x] + w >= d[y]对那MD个条件d[y] - d[x] >= w -> d[y] + (-w) >= d[x] 然后呢就可以加边了。对于一个不等式 d[u] + w >= d[v] 我们可以加边(u, v , w原创 2013-08-22 21:49:29 · 2058 阅读 · 0 评论 -
[Usaco2006 Nov]Roadblocks第二短路 堆优化的dijkstra
贝茜把家搬到了一个小农场,但她常常回到FJ的农场去拜访她的朋友。贝茜很喜欢路边的风景,不想那么快地结束她的旅途,于是她每次回农场,都会选择第二短的路径,而不象我们所习惯的那样,选择最短路。 贝茜所在的乡村有R(1如题,就是次短路而已,用SPFA或者Dij都行。不过这次我使用了Dij,由于要求次短路,那么外层的循环要有2*n-1次了,可以说成里边有n-1次求最短路的,n次求次短路的原创 2013-07-06 17:26:56 · 2308 阅读 · 1 评论 -
HDU 3760 Ideal Path 最短路+BFS
这题的话其实想是比较好像的,就是写起来代码比较多题目大意就是给出了一个无向图,每条边有一个编号。然后让我们求一条编号字典序最小的最短路那么首先我们做两遍SPFA,分别求出起点到所有点的距离,以及终点到所有点的距离这样我们就能判断某个点是否是最短路上的点之后我们进行BFS ,其实刚才求最短路BFS也行,因为每条边的权值都是1.然后BFS是这样的,假设我们已经BFS了x层了,然原创 2012-09-14 00:36:23 · 1851 阅读 · 0 评论 -
POJ 4370 0 or 1 图论模型的转化
这题的优点就在于模型的转化转化完就是个非常简单的最短路了显然,题目给的是一个0/1规划模型。解题的关键在于如何看出这个模型的本质。3个条件明显在刻画未知数之间的关系,从图论的角度思考问题,容易得到下面3个结论:1.X12+X13+...X1n=1 于是1号节点的出度为12..X1n+X2n+...Xn-1n=1 于是n号节点的入度为13.∑Xki原创 2012-08-16 20:18:30 · 807 阅读 · 0 评论 -
HDU 4360 最短路变形
题目大意是给一个n个点m条边的无向图。每条边有权值和一个字母标号,字母标号有四种 'L' 'O' 'V' 'E'现在要从1点到n点去找求找到一条路径,路径按顺序构成了若干个LOVE 注意必须是完整的LOVE然后要求有LOVE的的条件下路径最短,如果有多条最短路,找LOVE最多的那条思路就是拆点将每个点分为四个,代表L,LO,LOV, LOVE四种状态然后跑spfa即原创 2012-08-14 18:35:32 · 1376 阅读 · 0 评论 -
POJ 4046 Sightseeing 最短路
题意就不再赘述了黑书上308页例1是极其相似的题。。。。思路也一样枚举每个点作为吃饭的地点。每次以枚举的这个点为起点做最短路,途中不能走比它贵的点。每次求出最短路后要更新我们的查询答案。更新其实也就是一行的样子。假设查询的两个点有个最优的方案,那么路径上有某点是吃饭的地点,那么从该点出发按刚才的方法一定能找到查询的那两个点。据称本题卡常数,我最后用了3400ms 的样子原创 2012-08-13 20:36:19 · 939 阅读 · 0 评论 -
POJ 2112 二分图多重匹配+二分+floyd
题目意思不在赘述二分图多重匹配一般都可以用网络流来做,只不过网络流的代码太长。具体看代码把#include #include #include #include #include #include #include #include #define MAXN 250#define MAXM 100005#define INF 1000000007#defi原创 2012-07-20 13:04:44 · 988 阅读 · 0 评论 -
POJ 2607 Fire Station
又是一道最短路的题,为了提高效率,我用的邻接链表+SPFA做的,速度很快,0ms过的。首先,初始化完dist数组后,对每个消防站作为起点都求一次最短路,期间不再初始化dist数组,这样最后得到的dist数组就是每个居民到最近的消防站的距离。然后枚举每个点,每次求一下最短路,用其中的最大值比较一下。 然后这个代码贴到zoj上是过不了的,因为那里的输入很恶心人。还有空行神马的。/*I原创 2011-10-04 13:32:32 · 1655 阅读 · 0 评论 -
HDU 1595 find the longest of the shortest
这道题的题意就是有一个稠密图,一个人要从1走到N点,中间可能某一条路会断掉,求最短路最坏的情况, 也就是断掉某条路时,最短路径最长。这道题,不难想到枚举删边求最短路,这种方法下,用SPFA无疑是最好的选择。首先,用SPFA求出初始状态下的最短路,然后记录下最短路的路径,再枚举路径中的每条路,对每条路删除后求一次最短路,取最大值就行了。那么为什么只用枚举最短路上的这些路呢,很显而易见的是,如原创 2011-11-07 09:22:03 · 1886 阅读 · 3 评论 -
Codeforces Round #103 (Div. 2) D题 SPFA
题意就是求离源点距离为L的点的个数,点可以在节点上,也可以在路上,但是必须都是到源点的最短距离为L用SPFA求一遍距离,然后扫描一遍点,再扫描一遍边扫描边得时候注意了,有的边上有1个位置,有的边上有2个位置,并且要去重/*ID: sdj22251PROG: subsetLANG: C++*/#include #include #include #includ原创 2012-01-19 02:31:44 · 960 阅读 · 0 评论 -
POJ 3013 Big Christmas Tree 最短路
题目大意是:有一些点,每个点都有一个重量值,然后给出了一些边,每个边都有一个权值最后让用一些边组成一棵树,使得花费最少,每个边(u,v)的花费=(边得所有子孙节点的重量和)*(该边的权值)对于这个花费,可以看出,对于每条边(u,v),其花费就相当于每个在后面的结点都走了这个边一次,那么我们可以假想,已经形成了最优的树,观察这颗树,就能发现,对于一条边(u,v),由于边的子女都走了这原创 2012-01-21 02:51:52 · 1357 阅读 · 0 评论 -
POJ 1716 Integer Intervals SPFA 差分约束
用数组dist[i]表示从点0到点i-1所包含的关键点的数目;输入数据即可转化为:dist[b+1]-dist[a]>=2 => dist[a]-dist[b+1]根据实际情况还有两个约束条件:dist[i+1]-dist[i]dist[i+1]-dist[i]>=0 => dist[i]-dist[i]+1于是可以建图,SPFA。最后输出dist原创 2012-02-05 01:20:00 · 1090 阅读 · 0 评论 -
BOJ 333 最小生成树+最短路
很裸的一个题吧,就是先求出一个最小生成树,然后求的同时把图给建好,然后枚举起点,求最短路。因为在树上求最短路必然是O(n)的,所以总的复杂度是O(n2)的求最短路的时候囧了,直接写的SPFA,其实直接BFS就行了。不过明显写SPFA写习惯了。当然这道题卡人的地方很猥琐,是精度。用double竟然精度都不够,很诧异啊,然后经指点才知道,题目说最多有两位小数,直接放大100倍成long l原创 2012-03-03 16:26:57 · 878 阅读 · 0 评论 -
HDU 3986 最短路+枚举
这题HDU 1595 find the longest of the shortest 就是一模一样的但是出现了重边,就比较恶心人了然后就将输入的数据先排序,然后出现重边的肯定在一块,然后对每条边存储的是它最短的情况和次短的情况即可/*ID: CUGB-wwjPROG:LANG: C++*/#include #include #include #include #原创 2012-04-10 22:30:26 · 967 阅读 · 0 评论 -
HDU 3991 最短路+最小路径覆盖
题目大意就是,有一个图,上面有一些顶点,代表一些城市,在某些时刻, 某个城市里会有人需要礼物, 哈利波特需要及时的将礼物送到,但是哈利每1秒只能走一个单位长度,所以他需要朋友的帮助,来使所有的人都能及时的收到礼物。问需要的最少的朋友个数。那么看完题目后,实际上可以发现其跟路径覆盖非常有关系,因为是一些人走一些路径来将礼物送到。所以要先将任意两点间的最短路求好。然后枚举任意两个任务,原创 2012-04-10 22:43:57 · 775 阅读 · 0 评论 -
POJ 3463 最短路 次短路
本题是求最短路和比最短路距离长1的次短路的个数,于是就用到了dijkstra主要的改变就是数组都开到了二维,第二维用来表示是最短路还是次短路比如d[][]数组和vis[][]数组而cnt数组使用来存取最短路和次短路的次数那么最外层的循环就要到2*n-1次了,其中n-1次是用来求最短路的,还有n次是次短路的然后松弛的条件就要改变了,有四种情况1.比最短路短2.等于最短路3.长原创 2012-06-25 18:14:56 · 4159 阅读 · 0 评论 -
POJ 2449 Remmarguts' Date 第K短路 A* + SPFA
题目大意就是给出一个图,然后给出一个起点个一个终点,求这两点间的第K短路。本题中是可以走重复的路的,所以如果一张图中有一个环的话,无论求第几短路都是存在的。网上大部分的方法都是用A* + 最短路的方法做的。 对于A* ,估价函数 = 当前值+当前位置到终点的距离,即 F(p)=g(p)+h(p),每次扩展估价函数值中最小的一个。对于k短路来说,g(p)为当前从s到p所走的长度原创 2012-06-25 15:39:41 · 7506 阅读 · 5 评论 -
[Usaco2009 Jan]安全路经Travel dijkstra + 并查集
这题确实非常好!对最短路径可以有更深刻的理解。Gremlins最近在农场上泛滥,它们经常会阻止牛们从农庄(牛棚_1)走到别的牛棚(牛_i的目的 地是牛棚_i).每一个gremlin只认识牛_i并且知道牛_i一般走到牛棚_i的最短路经.所以它 们在牛_i到牛棚_i之前的最后一条牛路上等牛_i. 当然,牛不愿意遇到Gremlins,所以准备找 一条稍微不同的路经从牛棚_1走到牛棚_i.所以原创 2013-11-07 11:35:04 · 2310 阅读 · 0 评论