Dijkstra&&Bellman&&Floyd&&SPFA
文章平均质量分 82
WA是一笔财富
这个作者很懒,什么都没留下…
展开
-
POJ 2240 Arbitrage spfa判正环
传送门:POJ2240题意:给你一些货币和他们之间的汇率,问能不能“套利”。思路:将货币抽象成点,若两种货币之间能兑换则建边,汇率就是边权,注意是有向图。然后用spfa判正环就可以了,细节详见代码。代码:#include#include#include#include#include#include#include#include#include#include原创 2017-02-09 23:06:18 · 599 阅读 · 0 评论 -
Ombrophobic Bovines POJ - 2391 floyd+二分+拆点+最大流
传送门:POJ2391题意:有n个牛场,每个牛场有初始牛群和一个避雨棚,每个牛场的避雨棚都有自己的最大容纳量,某些牛场之间有道路连接,牛走过这些道路需要花费一定量的时间,问最少多长时间能让所有的牛都找到一个避雨棚。思路:这题和poj2112很相似,由于前两天刚做了poj2112,于是看完题就想到了二分+floyd+最大流,自信写完,然后样例也一遍过,还以为要1A了,然而却是无限的wa。。原创 2017-04-29 21:37:54 · 218 阅读 · 0 评论 -
Optimal Milking POJ - 2112 floyd+二分+最大流
传送门:POJ2112题意:有K个产奶机(1--K)和C头奶牛(K+1--K+C),每个产奶机最多可供M头奶牛使用,并告诉了产奶机、奶牛之间的两两距离Dij(1思路:如果不加最长距离最短的限制条件的话就是一个二分图多重匹配问题,而最长距离最短者中限制条件一般都用二分来解(看题后智障如我,根本没反应过来这是个二分的典型条件。。),因此,我们可以二分答案,然后每次判断最大匹配数等不等于总牛数,原创 2017-04-26 21:23:33 · 238 阅读 · 0 评论 -
POJ - 3662 Telephone Lines 二分 + 最短路
传送门:POJ3662题意:有n个点,其中m对可以连边,但是有不同的花费,现在要求将1和n连通,你可以先选k对点使其免费连上,剩下的需要你自己花钱,定义费用为需要你花钱的边中花钱最多的那条边,问最小费用是多少。思路:显然尽量让长的边都免费是最优的,因此我们可以二分花费第k+1大的边(也就是答案),然后用最短路进行检查,看看能不能只用k条比mid费用大的边就能让1和n连通,由于比mid小的边原创 2017-07-30 14:21:47 · 378 阅读 · 0 评论 -
POJ - 2139 Six Degrees of Cowvin Bacon floyd裸题
传送门:POJ2139题意:牛们最近在拍电影,所以他们准备去玩一个游戏——“六度分割”的变体。 游戏是这样进行的:每个牛离自己的距离是0度,如果两个不同的牛同时出现在一个电影里,那么他们之间的距离为1度,如果两只牛从未一起工作,但它们都与第三只牛一起工作,那么他们之间的距离为2度。 这N(2思路:求任意两点间最短距离,典型floyd,注意一下输出的时候取下整数就行了。#include原创 2017-07-24 16:45:58 · 411 阅读 · 0 评论 -
Aizu - 2249 Road Construction 最短路变形
传送门:AOJ 2249题意:出若干个建筑之间的一些路,每条路都有对应的长度和需要的花费,问在保证源点1 到其他个点的距离最短的情况下,最少的花费是多少。思路:以前做过类似的题,就是在松弛过程中维护花费,如果相等的话特殊判断一下就行,然而我把维护cost的过程写成了和维护dis一样的松弛操作。。应该是直接赋值就好了,不用加上前面的cost,否则就会有很多边被重复计算。代码:#inc原创 2017-07-24 16:51:48 · 367 阅读 · 0 评论 -
Aizu - 2200 Mr. Rito Post Office floyd + dp(好题)
传送门:AOJ 2200题意:你是某个岛国(ACM-ICPC Japan)上的一个苦逼程序员,你有一个当邮递员的好基友利腾桑遇到麻烦了:全岛有一些镇子通过水路和旱路相连,走水路必须要用船,在X处下船了船就停在X处。而且岛上只有一条船,下次想走水路还是得回到X处才行;两个镇子之间可能有两条以上的水路或旱路;邮递员必须按照清单上的镇子顺序送快递(镇子可能重复,并且对于重复的镇子不允许一次性处原创 2017-07-24 17:02:51 · 407 阅读 · 0 评论 -
HDU 6071 Lazy Running 同余 + 最短路
传送门:HDU6071题意:给你一个由四个节点组成的环,相邻两点间可达,求从节点2出发,回到节点2的不小于k的最短路径的长度。思路:先摆上官方题解:取w=\min(d_{1,2},d_{2,3})w=min(d1,2,d2,3),那么对于每一种方案,均可以通过往返跑ww这条边使得距离增加2w2w。也就是说,如果存在距离为kk的方案,那么必然存在距离为原创 2017-08-05 15:59:40 · 745 阅读 · 0 评论 -
HDU 6166 Senior Pan spfa(顶点集间最短路)
传送门:HDU6166题意:给出一个有向图,并给出一个点集,请求出集合中的点任意两两之间的最短距离中最小的那个。思路:当时xjb写了一发二分 + 爆搜,果不其然TLE。。正解:戳这里戳这里按照二进制位分组的思路真的是很巧妙啊。代码:#include#define ll long long#define inf 0x3f3f3f3fusing namespace std原创 2017-08-23 20:15:48 · 263 阅读 · 0 评论 -
Gym-100851F Froggy Ford 最短路变形 dijkstra || spfa
题意:有条宽为w的河流,两岸分别在x = 0, x = w处,河中间有n个石头。在河的左岸有一只青蛙想通过石头跳到对岸去。现在可以在河中间某个位置多加一块石头,使得青蛙在单步跳跃中的最大值最小,问应在哪里加。思路:将左岸抽象成原点,右岸抽象成目标点,原点到任意石头(x, y)的距离都是x,目标点到任意石头的距离都是w - x,任意两石头之间的距离就是他们坐标的欧氏距离,按此建图,跑一个dijk原创 2017-10-10 21:37:48 · 349 阅读 · 0 评论 -
ZOJ-3781-Paint the Grid Reloaded 缩点+建图+spfa
传送门:ZOJ 3781题意:给定一个由O和X组成的矩阵,每次可以选择一块翻动,与其相邻的且符号一样的也会一起翻动,即每次翻动一个连通块。问最少几步能把整个矩阵翻成同样的符号。思路:将每个连通块缩成点,相邻的连通块建边,于是题目就转化成了新建的图一个点到其他点的最长最短路最短最多少。个人感觉这层转化是最难的,正所谓图论难就难在建图吧。关于转化的个人理解:因为每次翻动一个连通块,就相原创 2017-03-24 12:04:35 · 284 阅读 · 0 评论 -
B - Jzzhu and Cities CodeForces - 450D spfa||dijkstra+堆优化
传送门: CodeForces - 450D题意:有n个城市,1号为首都,给定m条公路和k条铁路,铁路只能从首都到其他点,问在首都到所有点最短路长度不变的情况下最多能删除多少条铁路。思路:本来做这个题思路不太对,还好有某包巨给我指明了方向,因为我们要用尽可能少的铁路,而且又要求最短路长度不变,自然而然就会想到在松弛方面做文章,我们可以只用公路建图,将所有有铁路的城市标记出来并将dis数组初原创 2017-03-10 11:27:06 · 285 阅读 · 0 评论 -
poj1860(图论,bellman-ford)
传送门:poj1860。题意:有多种货币和多个货币兑换处,每个货币兑换处能将确定的两种货币互相兑换,但要收取一定的手续费,给你一种初始货币和一定的数量问你能不能经过兑换后使其数量变多。最后要换回初始的货币种类。货币兑换公式:Vb=(Va-Cab)*Rab.将每种货币看为一个点,一种货币能兑换兑换成另一种就在这两个点之间加一条边,即每个货币兑换处能在两个点之间形成一个环,要使货币增值就是原创 2016-10-08 19:39:07 · 332 阅读 · 0 评论 -
poj2253 Frogger(各种图论基础算法都能搞)&&poj1797 Heavy Transportation
传送门:poj2253题意就是求一号点到二号点之间各条路径中的最长边的最小值。这题好气啊。。网上那么多种方法,我竟然一种都没想出来。。也只能说自己太浮躁了。先是自己写的Floyd:#include #include #include #include #define inf 0x3f3f3f3fusing namespace std;int m;struct node原创 2016-11-27 00:14:18 · 264 阅读 · 0 评论 -
Cow Contest poj3660
传送门:poj3660题意挺简单的,就是有n头牛,给你一些他们之间的胜败关系,问你能不能确定某头牛的名次。这题思路好巧妙啊只能说。。因为他们之间的胜败关系就像大于小于关系一样,可以传递,所以把每头牛抽象成点,牛之间的关系抽象成有向边,然后就是求图中的传递闭包了。。可是做的时候根本没想到传递闭包这种东西啊。。而恰好floyd还可以将传递闭包的性质传递下去。。世界真奇妙。。我说的有点混乱,原创 2016-12-05 22:14:58 · 225 阅读 · 0 评论 -
0 or 1 HDU4370 最短路
传送门:HDU4370这题竟然是个最短路的题。。再次感受到了图论的核心是建图啊。。我就不瞎扯了,直接上邝斌巨巨的题解吧:点击打开链接当时自己做的时候因为专题名称是最短路,就使劲往图论上凑,然后就只想到了斌巨博客中提到的A情况。。然后一发wa,看了斌巨题解只能说不得不服啊。。自己写了个啥优化没有的dijkstra。。#include #include #include #d原创 2016-12-16 20:11:59 · 486 阅读 · 1 评论 -
POJ 1125 Stockbroker Grapevine floyd水题
传送门:POJ1125题意:有n个人,给出他们之间互相传送信息需要的时间,让你选出某个人,使信息他开始传遍所有人所需的时间最少。求这个人和所需的最短时间。思路:用floyd求出任意两人之间的最短路,然后筛选一遍就好了。当然也可以用dijkstra或者spfa,不过思路大体相同,算法不同罢了。代码:#include#include#include#include#includ原创 2017-02-09 22:39:17 · 225 阅读 · 0 评论 -
Marriage Match IV HDU3416 spfa+isap
传送门:HDU3416这个题值得纪念啊,本来是最短路专题训练里的题,结果掺杂了最大流,我就因此学了好几天的网络流。。题意:给定两个点,求两个点之间的最短路径,但是每条边只能走一次,问有几条最短路。学了最大流以后感觉这就是个最短路水题+最大流水题啊。。但是两个水题加起来就变成了难题。。题解:输入变得时候建两边图,一个正向,一个反向,然后spfa求起点到其他点的最短路和终点到其他点的最原创 2016-12-16 19:53:55 · 306 阅读 · 0 评论 -
The Shortest Path in Nya Graph HDU4725 spfa||dijkstra
传送门:HDU4725题意:有n个点,每个点属于不同的层,相邻的两层之间有边权值为C(假设为第一类边),某些点之间也有边(输入)(假设为第二类边)。问从1到n的最短路这题真真切切的坑啊。。数据量超大,很卡时间,一开始自己写T了,看了题解发现思路就不对,因为我当初理解的是每层只有一个点,然而并不是。。题解两种做法1)先将每层抽象成两个点,个人理解拆成两个点是因为每个点有两个作用,①当原创 2016-12-03 23:44:48 · 226 阅读 · 0 评论 -
HDU3499 Flight spfa
传送门:HDU 3499题意:有一个有向图,你要从特定的城市A飞到城市B去.给你这个图的所有边(航班)信息.但是你手上有一张卡,可以使得某一趟航班的价格减半.现在的问题是你从A到B的最小费用是多少?这个题A了的时候好激动啊。。虽然思想是听学长讲的,但是代码全程自己实现啊,虽然中间搜了一小下下题解,但是并没有什么卵用,因为网上本来这个题题解就少,大部分还是什么分层法写的,打算一会儿去学学。。原创 2016-11-28 21:15:27 · 622 阅读 · 1 评论 -
PAT 甲级试题1003 Emergency (25) dijkstra变形应用
传送门:Emergency (25)题意:给定一张图,每个点有点权,每条边有边权,问从s点出发到t点的最短路径有几条,这些最短路径中的点权集合的sum最大是多少。思路:一开始想到了用dijkstra,也想到了要稍微变形一下,在松弛的时候如果发现路径长度相等就要加上额外的路径数,但是老是觉得不对,自己否定自己,并且也没想出来该怎么求最大点权集合。 最后看了题解以后才发现自己好原创 2017-02-27 13:15:26 · 437 阅读 · 0 评论 -
HDU - 5036 Explosion floyd(bitset优化) + 概率期望
题意:给出n个房间。每个房间上都有锁。每个房间内有一定数量的能开其他房间的钥匙,若当前手里的钥匙不能再打开新的房间,我们可以选择用炸弹炸开一个新的房间,给出每个房间中钥匙的数目和具体能开那个房间,求要打开所有房间,需要使用的炸弹数目。思路:单独考虑每个点打开需要用炸弹的期望次数,那么所有点的期望之和就是答案。每个点 v 需要用炸弹的期望次数是 1/S, S是u(u->v连通)的数量,然后就变成原创 2017-10-11 22:16:42 · 436 阅读 · 0 评论