poj图论总结.docx
《poj图论总结.docx》由会员分享,可在线阅读,更多相关《poj图论总结.docx(14页珍藏版)》请在冰豆网上搜索。
poj图论总结
POJ图论分类【转】
一个很不错的图论分类,非常感谢原版的作者!
!
!
这个分类主要是POJ上面的题目,也包括了zoj、sgu、spoj等oj上的题。
寒假的时候已经做的差不多了。
现在准备写一些文章,来总结寒假时学的东西。
另外,这个分类依然欠缺了一些知识点,如欧拉回路、图的可平面化等。
我也会尽量的补充。
这将是图论最后的补完。
之后我会开始看《具体数学》了。
————————————————————————————
POJ图论分类
2009-07-2823:
13
POJ2449Remmarguts’Date(中等)
题意:
经典问题:
K短路
解法:
dijkstra+A*(rec),方法很多
相关:
该题亦放在搜索推荐题中
POJ3013–BigChristmasTree(基础)
题意:
最简单最短路,但此题要过,需要较好的程序速度和,还要注意精度
解法:
Dijkstra
POJ3463–Sightseeing(中等)
题意:
最短路和比最短路大1的路的数量
解法:
需要真正理解dijkstra
POJ3613–CowRelays(较难)
题意:
求经过N条边的最短路
解法:
floyd+倍增,贪心
POJ3621–SightseeingCows(中等)
题意:
求一个环路,欢乐值/总路径最大
解法:
参数搜索+最短路(ms原始的bellmantle,用spfa才过)
POJ3635–fulltank?
(中等)
题意:
最短路变形
解法:
广搜
相关:
生成树问题
基本的生成树就不放上来了
POJ1639–PicnicPlanning(较难)
题意:
顶点度数有限制的最小生成树
解法:
贪心+prim/kruskal
POJ1679–TheUniqueMST(基础)
题意:
判断MST是否唯一
解法:
prim就行,不过还是易错的题
POJ2728–DesertKing(中等)
题意:
所谓最优比率生成树
解法:
参数搜索+prim
POJ3164–CommandNetwork(难)
题意:
最小树形图
解法:
刘朱算法,这个考到的可能性比较小吧?
POJ3522–SlimSpan(基础)
题意:
求一颗生成树,让最大边最小边差值最小
解法:
kruskal活用
连通性,度数,拓扑问题
此类问题主要牵扯到DFS,缩点等技巧
POJ1236–NetworkofSchools(基础)
题意:
问添加多少边可成为完全连通图
解法:
缩点,看度数
POJ1659–Frogs’Neighborhood(基础)
题意:
根据度序列构造图
解法:
贪心,详细证明参见havel定理
POJ2553–TheBottomofaGraph(基础)
POJ2186–PopularCows(基础)
题意:
强连通分量缩点图出度为0的点
POJ2762–Goingfromutovorfromvtou?
(中等)
题意:
单向连通图判定
解法:
缩点+dp找最长链
POJ2914–MinimumCut(难)
题意:
无向图最小割
解法:
Stoer-Wagner算法,用网络流加枚举判定会挂
POJ2942–KnightsoftheRoundTable(难)
题意:
求双联通分量(或称块)中是否含奇圈
解法:
求出双连通分量后做黑白染色进行二分图图判定
相关:
POJ3177–RedundantPaths(中等)
POJ3352–RoadConstruction(中等)
题意:
添加多少条边可成为双向连通图
解法:
把割边分开的不同分量缩点构树,看入度
建议对比下1236,有向图添加多少条边变成强连通图
POJ3249–TestforJob(基础)
解法:
bfs/dfs+dp
POJ3592–InstantaneousTransference(基础)
解法:
缩点,最长路,少人做的水题,注意细节
POJ3687–LabelingBalls(中等)
解法:
拓扑排序
POJ3694–Network(中等)
解法:
双连通分量+并查集
2-SAT问题
此类问题理解合取式的含义就不难
POJ2723–GetLuffyOut(中等)
POJ2749–Buildingroads(较难)
解法:
二分+2-SAT判定
POJ3207–Ikki’sStoryIV–Panda’sTrick(基础)
解法:
简单的2-sat,不过其他方法更快
POJ3648-Wedding(中等)
解法:
用2-sat做会比较有意思,但是暴搜照样0ms
POJ3678–KatuPuzzle(基础)
解法:
直接按合取式构图验证就行了
POJ3683–PriestJohn’sBusiestDay(中等)
解法:
n^2枚举点之间的相容性构图,求解2-SAT
最大流问题
变形很多,最小割最大流定理的理解是关键
POJ1149–PIGS(较难)
绝对经典的构图题
POJ1273–DrainageDitches(基础)
最大流入门
POJ1459–PowerNetwork(基础)
基本构图
POJ1637–Sightseeingtour(Crazy)
题意:
求混合图的欧拉迹是否存在
解法:
无向边任意定向,构图,详建黑书P324
POJ1815–Friendship(中等)
题意:
求最小点割
解法:
拆点转换为边割
相关:
POJ1966–CableTVNetwork(中等)
题意:
去掉多少点让图不连通
解法:
任定一源点,枚举汇点求点割集(转换到求边割),求其中最小的点割
POJ2112–OptimalMilking(基础)
二分枚举,最大流
POJ2391–OmbrophobicBovines(中等)
题意:
floyd,拆点,二分枚举
相关:
POJ2396–Budget(中等)
题意:
有源汇的上下界可行流
解法:
用矩阵-网络流模型构图,然后拆边
相关:
,最小割模型在竞赛中的应用
POJ2455–SecretMilkingMachine(基础)
二分枚举,一般来说需要写对边容量的更新操作而不是每次全部重新构图
POJ2699–TheMaximumNumberofStrongKings(较难)
解法:
枚举人数+最大流(感谢xpcnq_71大牛的建图的提示)
POJ2987–Firing(较难)
题意:
最大权闭包
解法:
先边权放大,第一问总量-最大流,第二问求最小割
相关:
Profit(中等)
最大权闭包图的特殊情况
ZOJ2071–TechnologyTrader也是此类型,懒了没做
POJ3084–PanicRoom(中等,好题)
题意:
略
解法:
根据最小割建模
POJ3155–HardLife(很挑战一题)
题意:
最大密度子图
解法:
参数搜索+最大权闭合图,A.V.Goldberg的论文(nb解法)
最小割模型在信息学竞赛中的应用一文中也有讲
POJ3189–SteadyCowAssignment(中等)
题意:
寻找最小的区间完成匹配
解法:
这题充分说明SAP的强大,纯暴力可过。
更好的方法是在枚举区间的过程中不断删边和加边继续网络流过程
POJ3204–Ikki’sStoryI–RoadReconstruction(基础)
ZOJ2532–Internship(基础)
题意:
确定边是否是某个割中的边
解法:
两边dfs求割,或暴力枚举(需要写取消某条增广路的操作(但数据弱,也许不取消也能混过))
POJ3308–Paratroopers(较难)
POJ2125–DestroyingTheGraph(难)
题意:
最小点权覆盖
POJ3469–DualCoreCPU(中等)
题意:
最小割
POJ3498–MarchofthePenguins(中等)
题意:
满足点容量限制的网络流
解法:
拆点把点容量转换为边容量,枚举汇点
ZOJ2587–UniqueAttack(较难)
题意:
确定最小割是否是唯一的
解法:
得理解dfs求最小割算法的本质
SPOJ839–OptimalMarks(难)
http:
//www.spoj.pl/problems/OPTM/
题意:
略
解法:
很经典哦,见amber的集训队论文,根据标号的每一位求最小割
SGU326–Perspective(中等)
http:
//acm.sgu.ru/problem.php?
c0&problem=326
比较经典的构图法
费用流问题
可以KM解的就不放在这里,另外,感觉除非很特殊的图,一般用连续增广路的算法就够了
POJ2175–EvacuationPlan(中等)
题意:
判断是否给定解是最优解,比较阴的一题
解法:
根据给出的计划构造流,然后消且只消一次负圈
POJ3422–Kaka’sMatrixTravels(中等)
题意:
略
解法:
拆点
POJ3680–Intervals(较难)
题意:
略,这题还是蛮经典
解法:
discuss中比较详细
SPOJ371–Boxes(简单)
http:
//www.spoj.pl/problems/BOXES/
题意:
略
解法:
费用流,但似乎有比网络流更好的做法
SGU185–Twoshortest(中等)
http:
//acm.sgu.ru/problem.php?
c0&problem=185
题意:
求两条不想交的最短路径
解法:
费用流,也可以最短路+最大流。
匹配问题
正确理解KM算法是很重要的
这里我还要说几句:
最正确解最小权匹配的办法是用一个很大的数-当前边权值,而不是直接对边权取反(这样只能处理左右点相等的完全二分图,即K(n,n)
以上有可能还是说的有点问题,以后补充
POJ1486–SortingSlides(中等)
题意:
二分图的必须边
解法:
需正真理解最大匹配算法,详见
POJ1904–King’sQuest(中等,好题)
题意:
求二分图所有可能的匹配边
解法:
虽然最终不是用匹配算法,但需要理解匹配的思想转换成强连通分量问题。
POJ2060-TaxiCabScheme(基础)
题意:
最小路径覆盖
POJ2594-TreasureExploration(中等)
题意:
可相交最小路径覆盖
解法:
先传递闭包转化下
POJ3041–Asteroids(基础)
POJ2226–MuddyFields(基础)
题意:
行列的覆盖
解法:
最小点集覆盖=最大匹配
POJ2195–GoingHome(基础)
题意:
最小权值匹配
解法:
KM算法
POJ2400–Supervisor,Supervisee(中等)
题意:
输出所有最小权匹配
解法:
KM,然后回溯解,汗,输入的两个矩阵居然是反过来的
POJ2516-MinimumCost(中等)
题意:
最小权值匹配或最小费用流
解法:
拆点+KM算法(只有正确的才能过),费用流(ms错的可能也能过)
POJ3686–TheWindy’s(较难)
题意:
最小权值匹配
解法:
拆点,然后尽管用KM算法去水吧,数据其实弱得不得了O(50*50*2500)->16ms
相关:
SPOJ412–K-pathcover(较难)
https:
//www.spoj.pl/problems/COVER/
题意:
略
解法:
很牛叉的一道匹配
相关:
SGU206.Roads(较难)
http:
//acm.sgu.ru/problem.php?
c0&problem=206
解法:
经典题目,也可以使用spoj412那题的优化
NP问题
一般是搜索或dp解的
POJ1419–GraphColoring(基础)
题意:
图的着色
解法:
搜索,可惜题目的数据真是太弱了
POJ2989–AllFriends(难)
题意:
极大团数量
解法:
开始狂tle,后来找了论文:
FindingAllCliquesofanUndirectedGraph(CoenBron&JoepKerboscht)
ZOJ1492–MaximumClique(基础)
题意:
图的最大团
解法:
搜索,如果要求速度,可参考下相应论文
其他
不能成大类的
POJ1470–ClosestCommonAncestors(基础)
题意:
LCA问题
解法:
tarjan或RMQ,另外输入很恶心
POJ1985–CowMarathon(基础)
题意:
树