图论
文章平均质量分 61
EaShion1994
这个作者很懒,什么都没留下…
展开
-
POJ_3249 Test for Job(拓扑)
题目请点我 题解: 找到起点到终点的一条最长的路,输出最大的长度。起点定义为入度为0的点,重点定义为出度为0的点。 拓扑排序的题目,每次找到入度为0的点去更新,然后把权值往后叠加。这样能把所有的路径考虑到并且当遇到交叉节点时能保存较大值,题目数据量比较大,搜索是会超时的。注意因为存在权值为负的边,所以在更新的时候要注意。 测试数据: 7 7 1 2 3 -100 5 6 7 1 2原创 2015-06-21 18:29:17 · 549 阅读 · 0 评论 -
Poj_2240 Arbitrage(最短路)
题意:套利就是利用汇率的差异使自己的财富得到增加。给出几种货币之间的汇率,问能否通过套利使得财富增加。思路:转换为寻找有向图中是否有环。使用Bellman-Ford和SPFA分别实现了一下,SPFA稍微快一点,注意SPFA是入队超过N次。代码实现://Bellman-Ford#include #include #include #include #include #原创 2016-12-22 15:33:50 · 428 阅读 · 0 评论 -
Poj_3259 Wormholes(最短路)
题意:Farmer John拥有很多牧场,在牧场之间有双向的道路,也有单向的虫洞。虫洞可以使John从A到B并且时间后退T,John在想能否从某一点出发并在回到该点的时候时间比出发时还要走。思路:转化为最短路的找负环,将虫洞转化为带负权的边。考虑到双向边并且有重边,最开始想要用Floyd,但是WA掉了。后来改为Bellman-Ford,并不需要对重边进行处理。代码实现:#inc原创 2016-12-22 11:15:25 · 421 阅读 · 0 评论 -
Poj_1860 Currency Exchange(最短路)
题意:Nick现在有一国的货币,他想看能不能通过与其他货币交换使得自己的财富增加(存在正环)。国与国之间的货币交换遵循下面的规则:currB=(currA-commAB)*rateAB;思路:最短路找环,确定使用Bellman-Ford算法,利用松弛的的次数确定图中是否存在正环。代码实现:#include #include #include #include #in原创 2016-12-22 09:32:51 · 385 阅读 · 0 评论 -
POJ_3169 Layout(差分约束系统-最短路)
题意:一群牛按照编号排列,但是个别之间有限制。有的不能挨得太近,有的不能离得太远。问第1头牛和第N头之间最远是多少?思路:最开始想着是贪心,但是发现不好贪,牛是按照序号排列的,但是关系却很复杂。之后参考了网上的思路知道是差分约束系统,但是自己理解起来还是换了一些功夫。首先将题目中的关系均转化为不等式:隐藏条件:dis[i+1]>=dis[i]限制条件:dis[b]-原创 2016-11-26 20:43:49 · 430 阅读 · 0 评论 -
POJ_3255 Roadblocks(最短路)
题意:找第二短的路。注意是严格的第二短,第二短一定是大于第一短的路径,并且路可以重复走。思路:首先注意到点的取值范围N(1-5000),要用邻接表去双向存储边表。接下来考虑如何求第二短的路径,最好想的一个思路就是利用最短路的算法在维护最短距离的同时维护次短距离。另外设置一个dist1数组,当到达i点的最短路径更新时,将之前的最短距离存储到次短距离。在此注意设置dist[1] = 0原创 2016-11-26 15:50:12 · 472 阅读 · 0 评论 -
hdu_5952 Counting Cliques(dfs,优化)
题意:给一个无向图,N(0-100)个顶点,M(0-1000)条边,求图中顶点数为S(1-10)的完全图(任意两个顶点都有一条边相连)的个数。思路:最开始的思路就是深搜。但是题目对时间的要求很严格,需要特别注意优化。在我做题的过程中经历了下面几次优化:0. 限定按照顶点序号上升dfs(完全图性质);1. 存储边从数组转换为vector(题目说顶点的度最多为20,而顶点数最多为1原创 2016-12-05 11:21:10 · 891 阅读 · 0 评论 -
HDU_1829 A Bug's Life(并查集)
Problem DescriptionBackground Professor Hopper is researching the sexual behavior of a rare species of bugs. He assumes that they feature two different genders and that they only interact with b原创 2015-09-24 14:42:00 · 519 阅读 · 0 评论 -
POJ_1734 Sightseeing trip(拓扑)
题目请点我 题解: 这是一道简单的深搜,找到最短的一个环。深搜遍历每一个点,注意剪枝,边为双向边,并且可能会有重边。 代码实现:#include <iostream>#include <cstdio>#include <cstdlib>#include <cstring>#include <vector>#define MAX_N 110#define MAX_M 10010#d原创 2015-06-21 18:36:27 · 465 阅读 · 0 评论 -
HDU_3371 Connect the cities(最小生成树)
Connect the Cities Description In 2100, since the sea level rise, most of the cities disappear. Though some survived cities are still connected with others, but most of them become disconnected. The原创 2015-05-26 17:41:12 · 726 阅读 · 0 评论 -
HDU_1879 畅通工程(最小生成树)
继续畅通工程Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 16631 Accepted Submission(s): 7149Problem Description省政府“畅通工程”的目标是使全省任何原创 2015-05-25 17:15:38 · 498 阅读 · 0 评论 -
POJ_2186 Popular Cows(强连通分量)
题目请点我 题解: 这也是一道需要强连通提前处理的题目,但是我们需要的信息没有那么多。首先如果有满足解的话一定是所有的点都能指向终点(出度为0),并且重点只有1个,我们要求的答案也就是终点的size,如果不符合上述情况就代表无解,输出0.所以我们只需要知道出度为0的点的个数以及每个节点的size就可以了。 代码实现:#include <iostream>#include <cstdio>#原创 2015-06-23 22:08:51 · 466 阅读 · 0 评论 -
ZOJ_3795 Grouping(强连通分量 拓扑)
题目请点我 题解: 这是我的第一道强连通分量,虽然参考了别人的代码,还是很有收获。强连通分量的查找和处理是很多图论题目的第一步,所以还是很重要,这道题只是有向图的强连通处理。 这道题因为题目有讲每组关系都是不小于,那么如果出现环的话那只有一种情况,就是环上所有人都是相等的年龄,则这个环上所有的人的比较关系都是可以等价的,这就是为什么我们要先对强连通分量尽行缩点处理,将每一个强连通分量作为一个整原创 2015-06-23 19:36:30 · 577 阅读 · 0 评论 -
HDU_4109 Instrction Arrangement(拓扑)
题目请点我 题解: 有一系列的工作需要做,可以同时做很多工作,但是某些特定工作之间需要一定的时间间隔。现在给出了这些时间间隔,问最短需要多长时间才能把所有的工作做完。因为时间上的限制,很容易想到拓扑排序。因为是按照时间去工作,可以想像把所有的工作都放到一个时间轴上去考虑,这样我们可以利用一个优先队列去维护。 每一次找到入读为1的点,然后去更新跟当前点连接有限制的点。如果被更新点的入度变为1,则原创 2015-06-21 18:14:23 · 668 阅读 · 0 评论 -
Poj_2253 Frogger(最短路-SPFA+Dijkstra)
题意:青蛙1想要到青蛙2那儿去,中间有多个石头可供跳跃。求The frog distance.The frog distance: the minimum necessary jump range over all possible paths between the two stones.也就是说求所有路径中必须弹跳距离最短的那个,必须弹跳距离由路径中距离最远的那两个石头决定。思原创 2016-12-22 21:01:46 · 486 阅读 · 0 评论