ACM•图论
文章平均质量分 79
kksleric
这个作者很懒,什么都没留下…
展开
-
网络流&费用流专辑
poj1273 Drainage Ditches网络流第一大水,入门基础题。poj1459 Power Network有一个电力网络,有发电厂,有用户,图提供的信息有发电厂和用户的容量,还有边,以及边的容量和流量,求解用户的最大使用量.描述比较麻烦,入门基础题source连入所有的producer,所有的consumer连入sink,流量为最大生产量/消费量。求最大流。原创 2012-04-05 20:43:26 · 860 阅读 · 0 评论 -
hdu 3873 Invade the Mars(自写堆优化Dijkstra)
题意:以城市1为出发点,城市n为目的地,有若干条限制:要首先攻占城市a才能攻占城市b,问攻占城市n所需的最短时间。从源点到任意一点的最短路受两个条件的限制:一是源点到自己的最短路,而是源点到限制点的最短路,即限制点最短路f[c] = Math.max(f[c], d[a]);最短路d[c] = Math.max(d[c], f[c]);因此要确定所有限制点的最短路后才能使用该点松弛其它顶点原创 2012-08-14 10:12:14 · 763 阅读 · 0 评论 -
平面图ST最小割(hdu 3870)
对于平面图有如下性质:1.(欧拉公式)如果一个连通的平面图有n个点,m条边和f个面,那么f=m-n+22. 每个平面图G都有一个与其对偶的平面图G*3. G*中的每个点对应G中的一个面4.对于G中的每条边e,e属于两个面f1、f2,加入边(f1*,f2*)。如果e只属于一个面f,加入回边(f*,f*)。平面图G与其对偶图G*之间 关系:1. G的面数等于G*的点数,原创 2012-08-14 09:58:37 · 1944 阅读 · 0 评论 -
poj 2942 Knights of the Round Table
题意:在一张无向图中,问有多少个点不属于任意一个奇圈,孤立点不属于奇圈首先明确两个定理:定理1:对于一个点双连通分量,如果找个一个奇圈那么这个分量的其他点也必然在某个奇圈内。 证明很简单,设ab是一个奇圈上的点,c不属于这个奇圈,设c到a和边数为m到b的边数为n,若m+n为奇数,则c位于由这个奇环除ab外的其他边(偶数条)构成一个奇环,如果m+n为偶数,那么c到ab的路径与ab边构原创 2012-08-12 09:31:21 · 575 阅读 · 0 评论 -
hdu 3225 Flowers Placement(字典序第k小的完美匹配)
题意:用n个元素填满一个m行n列的矩阵,使得每行和每列中每个元素仅出现一次,现要再添加一行,使得矩阵仍满足上述限制,问字典序第k大的方案是什么.解法:错误的解法是填k次,每次填最小的,若仍存在解则第k次的填充方案就是字典序第k小的,例如原有1234,第一次填2143第二次填3412不死后第二小的。朴素的做法的dfs全排列然后验证,这样显然复杂度太高,于是考虑利用二分匹配剪枝:当递归到第i层原创 2012-09-05 11:56:25 · 946 阅读 · 0 评论 -
sgu 438 The Glorious Karlutka River =)(动态网络流)
题意:m个人在一条宽度为w的河的南岸,现在要到对岸,已知河中有n块石头,每块石头同时只能容纳ci个人,每个人一次都可以跳向距离为d的距离,每次跳跃耗时为1,问m个人全部过河所要花费的最少时间。解法:不难看出此题具有网络流的各个因素。源-南岸,汇-北岸,中间点-石头,边-距离小于d的石头之间的连线,费用-1,但是m个人可以分多次过河且可以在中间节点停留,因此不可用费用流解法。由于不同时刻两点之间原创 2012-09-07 16:37:18 · 1209 阅读 · 0 评论 -
消圈法解最小费用流(poj 2175 Evacuation Plan)
消圈算法: 先求最大流, 再在Gf中寻找负费用圈并沿它增广改进: 增加附加弧(s, t), 费用大于s-t最大费用路(如VC), 弧上的初始流大于s-t最大流(如s出发的弧容量和加1)消圈算法将让尽量多的流移出附加弧, 因此得到的流是最大流. 最后附加弧可能有余量,应当忽略实际效果: 最小费用增广路算法, 因为Gf中任何s-t路和t-s一定构成负费用圈最坏情况分析: 每次找负费用圈原创 2012-09-11 10:04:46 · 3479 阅读 · 0 评论 -
poj 3921/hdu 2485 Destroying the bus stations(最短路而非网络流费用流)
题意:给出一张有向图,每条边长度均为1,问至少删掉几个点,使得从1到n的最短路径长度大于k(长度小于等于k的不相交路径数目)第一种可以AC的做法:先求一次最短路,对于d[1][i]+d[i][n]>k的点一定是不需要去除的,然后对于剩下的点,求至少删掉多少个点使其不连通,典型的有向图点连通度问题,拆点求最小割即可,但是过不了这组数据:8 10 51 22 33 44 55原创 2012-09-12 20:41:16 · 1345 阅读 · 0 评论 -
平面图网络流(poj 2822 & hdu 4280 )
对于10^5个点10^6条边的网络流,一般做法无法高效解决,如果所有边都是双向边且网络能构成一个平面图,则可以通过求解对偶图的最短路求解,复杂度为O(M*log(M)),转化方法类似于《平面图S-T最小割》,详见http://blog.csdn.net/kksleric/article/details/7863279与S-T最小割平面图较规则不同,难点在于将一张图的块求出。大体分如下几步进行:原创 2012-09-10 15:13:24 · 2336 阅读 · 9 评论 -
中国邮递员问题CPP
问题描述:Chinese poster-man problem,简称CPP,给出一张连通图,问经过每条边至少一次且起点和终点相同,所需走的最小路程。无向图CPP1.考虑当所有点度数均为偶数时,该图是欧拉图,因此任意一条欧拉回路都是答案2.当有两个点是奇度点的时候,只需找到这两点间的最短路径,将最短路径上的边计入到原图中,这是得到了一张欧拉图(poj 1237 The Postal W原创 2012-09-13 18:02:50 · 4749 阅读 · 0 评论 -
hdu 4297 One and One Story(维护森林中的LCA)
题意:有n个房间,每个房间有且只有一条出边指向另一个房间,现给出两个人在两个房间,问让他俩汇合要走的最少的路径数解法:观察图的形态,由于n个点n条边,且每个点出度为1,因此可以认为是一个森林,森林里每棵树都加了一条边形成了一个环,且环是根节点(可以认为缩点后没有出边,即没有父节点)。显然两点属于不同树的时候不可达;因为图的特殊性,因此没有用强连通做,而是用了并查集判环,也便于给环上每个点标原创 2012-09-16 19:05:17 · 2389 阅读 · 0 评论 -
差分约束
1.对于每个不等式s[i]-s[j]向(j,i)加一条权重为k的边;对于每个不等式s[i]-s[j]>=k,向(i,j)加一条权重为k的边;增加源点s,并向所有点加一条权重为0的边;求最短路径求得的d[]是s[]的一组解,且是最大解(或求从t到s的最短路,d[s]为最小解)2.对于不等式 a - b >= c ,建一条 b 到 a 的权值为 c 的边,求的是最长路,得到的是最小值 注原创 2012-04-07 14:52:17 · 602 阅读 · 0 评论 -
poj 3241 Object Clustering(曼哈顿最小生成树)
题意:给出n个点,先要将n个点分为k个集合,要求对于每一个元素,都能在同一集合内找到至少一个元素满足两者之间的曼哈顿距离小于X,问最小的x是多少解法:显然是求最小生成树上第k长的边,由于是完全图,因此要充分利用曼哈顿距离的特点求解。定理:可以证明每一个顶点在最小生成树中在这45度的范围内至多仅有一条边与之相连。 仔细分析这一性质,我们猜想,这一条边是否一定是这个顶点在这一方向上的原创 2012-09-17 20:01:30 · 1249 阅读 · 3 评论 -
Road Repairs(CF 240E)
题目链接:http://codeforces.com/problemset/problem/240/E题意:一个五万个点和五万条边的图,每条边的边权为1或0,问以1为根的最小树形图,并输出方案。解法:传统最小树形图的复杂度为VE,但此图边权比较特殊,最小树形图的定义为除根节点外每个点都有入边,根节点有出边,且无环。因此可以首先使用边权为0的边为每个点找一条入边,对于仍然没有入度的点再使用边原创 2012-10-17 22:42:49 · 1059 阅读 · 2 评论 -
哈密顿路问题
对于一个图中是否存在一条哈密顿路,没有可靠的充分必要条件(貌似邻接矩阵恒式可以?),因此求哈密顿路是一个NP问题,一般要使用搜索和状压dp求解,但汉密尔顿回路的存在有许多充分条件,即当图满足某些特定性质的时候,汉密尔顿回路一定存在,而且可以根据一些算法构造出来。1.Dirac定理:设一个无向图中有 N 个节点,若所有节点的度数都大于等于 N/2,则汉密尔顿回路一定存在。(“N/2” 中的除原创 2012-09-14 15:33:07 · 3487 阅读 · 0 评论 -
最小割专辑
一、基本问题:1.到底什么是割:原始点集为V,选出一些点集S使得s∈S,T=V-S,t∈T,则S到T的边为S到T割,记做[S,T]。2.什么是最小割:图中所有的割中,边权值和最小的割为最小割!3.割得容量容量和流量计算的区别:割[S,T]的容量为∑(边(u,v)的容量和),其中u∈S,∈T。也就是说割的容量不计算反向的边!!而流量为正向的和反向的代数和。4.最大流-最小割定理:最大原创 2012-04-06 08:49:09 · 3027 阅读 · 0 评论 -
hdu 4411 Arrest(费用流)
题意:有N+1个点,每个点与编号大于自己的点之间有一条有权边(权重通过floyd求得),现有k个人位于0处,要从k个人中选出若干个人遍历其它点并最终回到0点,使每个点(除0外)都被访问恰好一次,问最小费用之和为多少解法:每个点之多走一次,显然需要把一个点拆成两个,一个出点一个入点之间费用为0流量为1,超级源点拆为流量为k费用为距离的边,但如何让保证每个点都恰好走过一次呢?由于原图无环,所以可以原创 2012-09-23 15:45:52 · 3341 阅读 · 0 评论 -
spoj 3196 Divisibility Relation(最大独立集输出方案)
题意:给出200个数,选出最大的子集,使得子集中的数相互不整除。解法:将可以整除的点连边,看上去像是个无向图最大独立集,通过求最大团的办法求解复杂度hold不住。于是观察图的特点,由于整除是一种偏序关系,因此构成的是一个有向无环图,因此也是个二分图(二分图的一个充分必要条件是无奇圈),于是可以转化为求解二分图的最大独立集。具体做法Matrix67给出了证明过程,这篇文章里有http://blo原创 2012-09-04 20:49:13 · 1108 阅读 · 1 评论 -
二分匹配总结
相关题目:http://blog.csdn.net/kksleric/article/details/7433909最大匹配匈牙利算法:对于增广路径可以用一个递归的方法来描述。这个描述不一定最准确,但是它揭示了寻找增广路径的一般方法:“从点A出发的增广路径”一定首先连向一个在原匹配中没有与点A配对的点B。如果点B在原匹配中没有与任何点配对,则它就是这条增广路径的终点;反之,如果点B已与原创 2012-04-16 15:46:09 · 979 阅读 · 0 评论 -
网络流求解图的连通度问题
图的连通度问题:在图中删去部分元素(点或边),使得图中指定的两个点s和t不连通(不存在从s到t的路径),求至少要删去几个元素。图的连通度分为点连通度和边连通度:(1)点连通度:只许删点,求至少要删掉几个点(当然,s和t不能删去,这里保证原图中至少有三个点);(2)边连通度:只许删边,求至少要删掉几条边。并且,有向图和无向图的连通度求法不同,因此还要分开考虑(对于混合图,只需将其中所原创 2012-04-06 10:23:52 · 1487 阅读 · 0 评论 -
二分匹配题解
poj 2239 Selecting Courses题意:学校一周7天每天可以开12节课,现在给出每门课开课的时间(一周可重复多次),一周中最多可以上多少门课(每门课只算一次)。裸的水二分匹配poj2516 Minimum Cost题意现在有n个顾客,m个供货商,k种商品,接下来输入n行顾客分别对k种商品的需求,再接下来输入m行分别为供货商分别提供的k种商品的数目,接下来有原创 2012-04-06 22:37:17 · 963 阅读 · 0 评论 -
2-sat专辑
一、关于模型:一个2-SAT模型应该是一个满足以下的条件的满足性问题:1、该模型中存在2n个可以分成n组的元素,每组两个元素。2、每组元素中,选择了其中一个元素,另外一个元素就不能被选择。这两个元素记为a和!a。3、该模型中的元素之间存在一些关系,且这些关系是对称的。(除非是同一组元素中的关系,这些关系限定了“必须选择”该组中的某一个元素,可能单独出现)满足上述条件,要求在满足原创 2012-04-07 15:29:33 · 703 阅读 · 0 评论 -
几种特殊的生成树
1.(严格)次小生成树解法:1.依次删除树上的边后求最小生成树,判生成树唯一时只需删存在与它长度相同的边,严格次小生成树只需删没有与自己长度相同的边。 2.以最小生成树上每个点为根dfs,求出树上任意两点之间的最长边。枚举所有不在最小生成树上的边,将其添加到树上必定形成一个环,去掉环上的最长边形成的生成树最小。判断生成树是否唯一,求次小生成树严格次小生成树等均在此处处原创 2012-05-02 09:22:21 · 4962 阅读 · 0 评论 -
连通性问题
强连通分量SCCTarjan解强连通分量的科普文www.byvoid.com/blog/scc-tarjan/。poj 2186 Popular cows题意:奶牛的梦想是成为牛群中最受欢迎的奶牛,即受其它所有牛的欢迎。“欢迎”是具有传递性,即如果牛A认为牛B受欢迎,牛B觉得牛C受欢迎,则牛A也隐含地认为牛C受欢迎。现在,给一组点对 (A,B) 表示 A 认为 B 受欢迎,找出原创 2012-04-07 15:16:39 · 790 阅读 · 0 评论 -
LCA问题
LCA(Least Common Ancestors),即最近公共祖先:在有根树中,找出某两个结点u和v最近的公共祖先(另一种说法,离树根最远的公共祖先)。 使用RMQ解决LCA问题,一篇不错的文档http://wenku.baidu.com/view/392c7023dd36a32d73758193.html,解释了两者之间的转换。在线算法DFS+ST描述(思想是:将原创 2012-04-09 19:22:44 · 2053 阅读 · 0 评论 -
poj3487稳定婚姻匹配
稳定婚姻问题:有n位男士和n位女士,每一个人都对每个异性有一个喜好度的排序,代表对他的喜爱程度,现在希望给每个男士找一个女士作配偶,使得每人恰好有一个异性配偶。如果男士u和女士v不是配偶但喜欢对方的程度都大于喜欢各自当前配偶的程度,则称他们为一个不稳定对。稳定婚姻问题就是希望找出一个不包含不稳定对的方案。 算法非常简单,称为求婚-拒绝算法,每位男士按照自己喜欢程度从高到低依次给每位原创 2012-07-16 21:20:19 · 2945 阅读 · 1 评论 -
生成树计数
Matrix-Tree定理(Kirchhoff矩阵-树定理)解决简单平凡无向图的生成树计数问题最有力的武器之一1、G的度数矩阵D[G]是一个n*n的矩阵,并且满足:当i≠j时,dij=0;当i=j时,dij等于vi的度数。2、G的邻接矩阵A[G]也是一个n*n的矩阵, 并且满足:如果vi、vj之间有边直接相连,则aij=1,否则为0。我们定义G的Kirchhoff矩阵(也称为拉普拉原创 2012-07-19 22:40:14 · 777 阅读 · 0 评论 -
Tarjan离线算法求LCA小结
求LCA的两种做法不多解释,这篇文章有详细解释。以前以为转RMQ法求LCA可以取代tarjan,实则不然,Tarjan不仅效率更高,而且可以维护一些路径上的统计量。于是又离线Tarjan法做了一些题目。比较经典的是SPOJ 3978 Distance Query,是高效求解次小生成树的基础,详见《扩展Tarjan求解树上两点路径上的最长边》poj 3728 The merchant原创 2012-08-04 15:06:47 · 1370 阅读 · 0 评论 -
扩展Tarjan求解树上两点路径上的最长边(高效求解次小生成树)
SPOJ 3978 Distance Query题意:给出一棵有边权的树(100000个点),有100000次讯问两点间路径上的最长边和最短边。扩展Tarjan算法可以离线解决LCA问题(http://blog.csdn.net/kksleric/article/details/7442258)因此也可用于维护两点间路径上的性质。设mx[i]为i点到当前集合根节点(tarjan过程中并原创 2012-08-03 15:53:32 · 2191 阅读 · 0 评论 -
有上下界限制的网络流
定理及模型参见《一种简易的方法求解流量有上下界的网络中网络流问题》详细构图过程及证明参见《Amer图论总结》1.最简单的是求无源汇点的图的可行流。若存在可行流,由于每条弧的流量都要大于下限,因此可以将每条弧拆为流量为low的和一条流量为up-low的,称前者为必要弧增加一个附加源x,一个附加汇y,每条有向必要弧(u, v),添加(u, y),(x, v),容量为low。这样原创 2012-08-05 19:44:34 · 1388 阅读 · 0 评论 -
Hdu3947 流量等式建图
此题是以《NOI2008志愿者招募》为背景的,预做此题需要先体会《志愿者招募》的思想只不过由线性结构变为树形结构,但是问题的本质没有变,都是一个元素影响连续的若干个位置,构图的本质都是使每个变量x出现分别以+和-的形式出现在两个恒等式中,由此可以看做x变量从+式流入-式流出。设药品为x,为每条河建立一个等式,则x出现在了u的父边到v的父边路径上的所有等式中,因此用每个点的父边减去所有孩子的边(原创 2012-08-08 21:55:25 · 2479 阅读 · 0 评论 -
边双连通分量
关于桥与双连通分支的定义及求法void大神给出了很详尽的介绍图的割点、桥与双连通分支总结几条做题过程中发现的关于边双连通分量的性质:1.将图中每个边连通分量缩为一个点后,只连端点不位于同一连通分量中的边,则将图转换成了一棵树,且树中的边都是父子边。2.在对图进行搜索时,图中的边分为父子边和返祖边(交叉边),则一个具有n个点的边连通分量中有且仅有n-1条父子边,且可由着n-1以条原创 2012-08-12 09:12:37 · 1153 阅读 · 0 评论 -
POJ图论列表
做题记录: AC 典型 好题或较难 待做 WA 多次wa后ac1062* 昂贵的聘礼 枚举+dijkstra加点构图1087A Plug for UNIX 2分匹配+Floyd 1094 Sorting It All Out floyd +拓扑1112* Team Them Up! 2分图染转载 2012-04-09 09:46:04 · 1360 阅读 · 0 评论 -
利用完全二叉树快速求解LCA
以下内容是从AekdyCoin的一篇文章里看到的,源处处不明,只是感到很神奇,尚未发现用武之地。下面所说的算法由于相比于Tarjan和nlogn的做法会复杂一些,因此用的也不多。不过出于好奇,我还是研究了一下。众所周知,lca和rmq就像情侣一样关系紧密。lca可以由dfs一次转化为+1rmq问题,而+1rmq是可以用O(nlogn)-O(1)或O(n)-O(1)做出来的,不过写起来会转载 2012-08-06 20:00:32 · 2285 阅读 · 0 评论 -
poj 2793 Cactus(无向仙人掌图判定)
有向Cactus图:1.它是一个强连通图。2.它的任意一条边都属于且仅属于一个环。有向Cactus图判定:性质1 有向Cactus的DFS树没有横向边(不等价于非父子边)。性质2 low(u)是v的儿子)性质3 设某个点v有a(v)个儿子的low值小于dfn(v),同时v自己有b(v)条逆向边。那么a(v)+b(v)。这三条性质也就是一个有向图是有向Cactus的充要条原创 2012-08-15 19:01:32 · 2779 阅读 · 0 评论 -
最大权闭合图&&最大密度子图
poj 2987 Firing题意:一个公司要裁人,给出裁每个人都有个盈利或者损失,如果一个人的上司被裁那么他也将被裁,现给出上下级关系问怎样裁才能使得公司的收益最大,最大为多少?思路:最大(点)权闭合图,挺经典的一道题,在《最小割模型在信息学竞赛中的应用》有详细的证明。spoj 1476 MaximumProfit题意:n个中转站,每个站建立花费Xi m个客户,每个转载 2012-04-06 08:45:38 · 4906 阅读 · 1 评论