
图论
notmuch
这个作者很懒,什么都没留下…
展开
-
杭电ACM——2063,过山车(匈牙利算法)
一开始以为是个贪心,结果WA了好多次,在网上查了这道题,发现应该用匈牙利算法解决这道题。关于匈牙利算法的讲解见:https://blog.youkuaiyun.com/lw277232240/article/details/72615522或https://blog.youkuaiyun.com/dark_scope/article/details/8880547匈牙利算法的核心是寻找増广路,是一种用增广路径求...原创 2019-05-09 21:12:58 · 356 阅读 · 0 评论 -
POJ2502,Subway(Dijkstra)
虽然是道最短路的裸题,但是也要很容易错。同条线路之间的地铁站,只能够在相邻的地铁站可以直线抵达,如果要算地铁站1到地铁站3的距离,必须是dis(1->3)=dis(1->2)+dis(2->3),而不能够之间利用1,3的坐标算出直线距离。代码如下:#include<cstdio>#include<iostream>#include<algor...原创 2019-06-21 17:29:21 · 184 阅读 · 0 评论 -
POJ3159,Candies(Dijkstra+链式前向星)
做这道题的时候Dijkstra的松弛方式搞错了,一直WA。。。令x-y<=z表示x最大比y大z。若b-a<=k1, c-b<=k2, c-a<=k3,那么c-a最大为多少呢?显然应该等于min(k1+k2, k3)。可以用下图来表示示(不擅图丑勿怪)上述引自:https://blog.youkuaiyun.com/to_be_better/article/details/50...原创 2019-06-21 20:41:07 · 182 阅读 · 0 评论 -
POJ1860,Currency Exchange(Bellman-Ford)
题意:有N种货币,有M个机构可以提供换币服务,每个机构只能提供2种货币的换币服务,以输入数据1 2 1.00 1.00(r1) 1.00(c1) 1.20(r2) 1.00(c2)为例,设最初有100个货币1,货币1转换为2后得到货币2的数量为:(100-1.00)*1.00=99; 同样2转1得到:(99-1.00)*1.20=117.6。某人现有货币S数量V,问经过一系列的转换后,能否将货币...原创 2019-06-18 12:16:32 · 158 阅读 · 0 评论 -
POJ3259,Wormholes(并查集+Bellman-Ford)
这道题要求的是给定一个图,判断是否存在一个负环。很容易就想到Bellman-Ford算法,但是此题所提供的图可能是不连通的,因此题中的图可能会分成几个子图,而Bellman-Ford只能够判断源点所在子图是否存在负环,其他子图由于未连通而无法判断。因此,简单的使用Bellman-Ford是不行的。那么怎么解决这个问题呢?可以想到,我们能不能在每个子图中都设一个源点,这样每个子图就可以判断是否存...原创 2019-06-18 17:00:04 · 264 阅读 · 0 评论 -
POJ1273,Drainage Ditches(最大流问题)
网络流最大流问题, Dinic与ISAP模板题。关于Dinic与ISAP的讲解可参考:https://zhuanlan.zhihu.com/p/46039732https://blog.youkuaiyun.com/qq_34374664/article/details/75394588Dinic AC代码:#include<cstdio>#include<algorithm&g...原创 2019-06-27 19:43:48 · 129 阅读 · 0 评论 -
最小费用最大流问题(证明)
在网上翻了很久,终于找到一个大概看得懂的证明了。https://bartholomewa.wordpress.com/2018/04/25/最小费用最大流详解模板/转载 2019-06-24 22:38:14 · 1697 阅读 · 0 评论 -
POJ3281,Dining(二分匹配)
不难看出,这道题属于网络流的二分匹配应用,不过,在建模的时候要小心注意一点。此题当中有两个二分图,分别是1 ~ n->1 ~ f, 1 ~n -> 1 ~ d,建模要把两个二分图给联系,同时应建模过程中要注意,保持每个food和drink只能选一次以及每只cow只能挑选一次的特点。本人所建立的网络模型是,引入源点与汇点s=0,t=f+2n+d+1,以及四个点集V1,V2,V3,V4,...原创 2019-07-04 11:14:21 · 165 阅读 · 0 评论 -
HDU4280,Island Transport(最大流ISAP)
这道题是最大流的裸题,但是数据很大,时间卡得比较严,前几次是用Dinic的,都超时了,后面改用效率更高的ISAP,3700MS AC。代码如下:#include<cstdio>#include<iostream>#include<algorithm>#include<cstring>#include<queue>using ...原创 2019-07-14 14:00:39 · 153 阅读 · 0 评论 -
POJ3436,ACM Computer Factory(最大流)
代码如下:#include<cstdio>#include<algorithm>#include<iostream>#include<cmath>#include<queue>#include<cstring>#include<stack>using namespace std;const int...原创 2019-06-29 21:28:38 · 152 阅读 · 0 评论 -
POJ1459, Power Network(最大流)
用网络流最大流算法解决。本题看似有多个源点(发电站np)和多个汇点(用户nc),其实不然,我们只需添加s源点,t汇点,s连接np各点,其权值为发电量,nc各点连接t,其权值为用电量。代码如下:#include<cstdio>#include<iostream>#include<algorithm>#include<cstring>#in...原创 2019-07-14 23:49:51 · 137 阅读 · 0 评论 -
POJ2195,Going Home(二分图带权匹配)
本人是用最小费用最大流变形过的,关于最小费用最大流可参考博客:https://blog.youkuaiyun.com/LeYOUNGER/article/details/70156905 (算法证明)https://blog.youkuaiyun.com/y990041769/article/details/40074527 (模板)150+MS过,在讨论中看到有人用KM算法(一种处理关于二分图在完备匹配下的最大带...原创 2019-07-11 16:31:40 · 171 阅读 · 0 评论 -
牛客CCPC.2017秦皇岛站-重现赛,H(二分图匹配)
一开始确实想到了用匈牙利算法去做,但是错在了两个地方:1.无向图应建立双边;2.想到了用匈牙利算法求出所有的元素不重复的prime set后,设当前总集合数为Set,k-Set>0的情况想得过复杂了而导致错误。另外,这题本人觉得有一点玄学的地方就是,我原本是用前向星建图的,但是超时了,后来看别人的代码改用了vector建临接矩阵才过的。。。(感觉前向星应该是比vector快挺多的才对,...原创 2019-07-28 00:28:32 · 222 阅读 · 0 评论 -
洛谷P1967 货车运输(倍增+LCA+生成树)
题意:有n座城市,m条道路,每条路有个限流w,有q次询问,询问x,y城市之间的一次性允许通过的最大流量是多少。题意不难理解,看起来也不难,可以用倍增+LCA解决,但是此题有个难点:x,y城市之间可能有多条道路,非但如此,题意给的图可能会有环。我们知道,要用LCA算法前提是图不能有环,如果只是有多条路而无环,我们还可对m条路排一次序,剔除掉那些多余的路径,这样就可以用LCA,但如果有环的话就行不通...原创 2019-08-30 12:36:11 · 191 阅读 · 0 评论 -
牛客练习赛51,D(二分图匹配)
我们把1-400个时间点看成一个集合A,把所有的羊看成集合B,第i只羊喜欢区间[a[i],b[i]],就给B中的i与A中的[a[i],b[i]]连一条边,这样就转化成了二分图匹配的模型了。我们每次询问只需在A中的[l,r]进行匹配。本人采用匈牙利算法去做。#include<cstdio>#include<iostream>#include<cstring>...原创 2019-09-15 22:51:26 · 154 阅读 · 0 评论 -
POJ3268,Silver Cow Party(最短路)
这道题的大概意思就是,有n只奶牛,它们的家的编号为从1到n,编号为x的奶牛要举办party,其它奶牛都要去它家参加,参加完后又要回去,每只奶牛不论是去还是回,都会挑选最短的路径走。最终要从这些奶牛当中,算出他们各自来与回的总时长,并输出最大的那个时间。 此题涉及的图示有向图。显然,奶牛们从x的家回到自己家的过程,可以看成是求单源最短路问题,不过,奶牛们从家里出发到x家,这个过程其实...原创 2019-06-17 16:58:35 · 156 阅读 · 0 评论 -
POJ1797,Heavy Transportation(最短路变形)
这道题跟之前写的这个博客:https://blog.youkuaiyun.com/shamansi99/article/details/92441222 非常相似,于是一开始以为是一模一样的,就直接按之前那道题的AC代码打好提交了,结果WA了很多次。。。。后来看讨论区才知道,其实这道题求的是源点1到n的所有路径中最小边的最大值,而之前那道是源点1到n的所有路径中最大边的最小值,刚好反过来了。代码如下:#i...原创 2019-06-17 15:54:50 · 137 阅读 · 0 评论 -
POJ1789,Truck History(Prim算法)
这道题一开始看的时候很懵逼,不知道它在讲什么,后来仔细读一读题意,才知道,其实这是一道最小生成树的题。原题意:输入n,代表有n个truck,接下来输入n行,每行一个代表truck的代码,每个代码都是固定7个小写字母。定义两个truck之间的距离为:字母不同的位置数。定义一个derivation plan的质量为:1/sum(所有truck间的距离之和)。要求输出最大的可能的质量。根据题意,要使...原创 2019-06-05 10:01:26 · 363 阅读 · 0 评论 -
ZO1586,QS Networking(Prim)
这道题也是用最小生成树当中的Prim算法。不过,这道题有个地方要注意,两个顶点之间的边的权还要加上两个顶点对应的adapter的费用,否则会出错。代码如下:#include<iostream>#include<cstdio>#include<cstring>#define inf 100000000using namespace std;cons...原创 2019-06-05 20:09:21 · 126 阅读 · 0 评论 -
POJ1502,MPI Maelstrom(最短路)
没看题,直接看输入输出,猜出了大概就是求1到其他点的最短路径,输出其中的最大者。然而还是WA了很多次,错了很多奇奇怪怪的东西(不知为啥在POJ刷题经常会遇到这种情况。。。)注意一下数据的输入与处理吧。代码如下:#include<cstdio>#include<iostream>#include<algorithm>#include<cstri...原创 2019-06-18 20:52:52 · 124 阅读 · 0 评论 -
POJ3660,Cow Contest(Floyd)
这道题是利用Floyd算法判断各顶点是否连通的一个变形。设置一个d[i,j]数组,d[i,j]=1表示i胜j,d[i,j]=-1表示i负j,i=j时d[i,j]赋为0(其实没什么大的意义,也可以理解为自己跟自己不分胜负)。另设置u[i],v[i]数组,表示每个回合的对战,其实u[i]为赢家,即d[u[i],v[i]]=1。先用Floyd判断出每只牛(每个顶点)能够战胜的牛(与其他顶点时否连通)...原创 2019-06-19 15:03:22 · 135 阅读 · 0 评论 -
POJ1287,Networking(Kruskal算法)
这是最小生成树当中的Kruskal算法的模板题。Kruskal算法是基于贪心的思想,利用并查集求出连通图的最小生成树。关于其详解可参考博客:https://blog.youkuaiyun.com/luoshixian099/article/details/51908175https://blog.youkuaiyun.com/stary_yan/article/details/51427864#算法描述-1很神奇...原创 2019-06-03 16:24:31 · 154 阅读 · 0 评论 -
HDU1879,继续畅通工程(Kruskal算法)
用最小生成树中的Kruskal算法解决。代码如下:#include<cstdio>#include<algorithm>#include<iostream>using namespace std;const int maxn=1e4+5;struct E{ int f,t; int wei;}edge[maxn];int fa[105];...原创 2019-06-03 16:43:00 · 158 阅读 · 0 评论 -
POJ2240,Arbitrage(Bellman-Ford)
题意大概就是给你一个有向图,让你判断是否存在正环(图不一定连通)。不一样的是,每个顶点都是一个字符串,不过不要紧,我们可以用一个map<string,int>,把他们改为整型数据。代码如下:#include<cstdio>#include<iostream>#include<algorithm>#include<cstring>...原创 2019-06-19 15:49:05 · 233 阅读 · 0 评论 -
HDU1301, Jungle Roads(Kruskal算法)
用最小生成树中的Kruskal算法解决。在这里插入代码片代码如下:#include<cstdio>#include<iostream>#include<algorithm>#include<cstring>using namespace std;const int maxn=1e3+5;int fa[27];struct eg{...原创 2019-06-03 17:35:47 · 186 阅读 · 0 评论 -
POJ1511,Invitation Cards(Dijkstra)
直接用Dijkstra就行了,要用优先队列优化。AC代码,Time:6000MS(在网上搜大佬的代码改的,感觉与我原先的基本差不多):#include<cstdio>#include<iostream>#include<algorithm>#include<cstring>#include<cmath>#include<...原创 2019-06-19 18:13:24 · 164 阅读 · 0 评论 -
POJ1751,Highways(Prim算法)
用Prim算法就好。代码如下:#include<cstdio>#include<iostream>#include<queue>#include<algorithm>#include<cmath>using namespace std;const int maxn=1e3+5;struct edge{ int fro...原创 2019-06-10 17:34:47 · 351 阅读 · 0 评论 -
POJ3026,Borg Maze(BFS+最小生成树)
第一次接触BFS居然是和最小生成树结合在一起的。一开始是用DFS求各个A及S之间的最短路径,严重超时。。。网上求助大佬后才知道要用BFS,结果超快!代码如下:#include<cstdio>#include<iostream>#include<algorithm>#include<cstring>#include<queue>...原创 2019-06-16 10:34:16 · 152 阅读 · 0 评论 -
POJ2387,Til the Cows Come Home(Dijkstra算法)
最短路Dijkstra的模板题,不过需要注意的是,这道题的图是无向图。用了两种方式过这道题,一种是基本的方式,一种是借助优先队列优化的。第一种代码:(要用邻接矩阵)#include<cstdio>#include<iostream>#include<algorithm>#include<cstring>#define inf 10000...原创 2019-06-16 11:09:49 · 130 阅读 · 0 评论 -
HDU1102,Constructing Roads(Prim算法)
Prim算法适用于稠密图,关于其详解,可参考博客:https://blog.youkuaiyun.com/yeruby/article/details/38615045代码如下:#include<cstdio>#include<iostream>#include<cstring>#include<algorithm>using namespace ...原创 2019-06-04 20:50:39 · 131 阅读 · 0 评论 -
POJ2253,Frogger(最短路变形)
此题为最短路的变形,最短路原本是求源点到任一点的最短路径,这里是要求源点到特定点的所有路径中最长边的最短边。可用Dijkstra解决,在边的松弛的时候改一下操作就好了。代码1:#include<cstdio>#include<iostream>#include<algorithm>#include<cstring>#include<...原创 2019-06-16 23:30:53 · 150 阅读 · 0 评论 -
最短路Bellman–Ford算法(转)
博客链接:https://blog.youkuaiyun.com/a8082649/article/details/81812000转载 2019-06-17 14:45:01 · 233 阅读 · 0 评论 -
牛客练习赛43,C(最小生成树)
这道题很明显就是一道最小生成树的题,但是我交了17次才AC。。。本题用Prim是应该是过不了的(即使用了堆优化),只能用Kruskal过。但是用Kruskal要注意以下几点:1.排序问题,快排是不行的,算了一下,快排在这道题中最坏的时间频度是1.2e8+,这样子基本上是很难卡过去的,何况还有常数系数。解决方案是用桶排序。2.并查集优化,本题数据量很大,如果并查集最后数据成了一条链,那必定是凉...原创 2019-10-03 23:34:20 · 196 阅读 · 0 评论