POJ图论

 

POJ 2449 Remmarguts' Date(中等)  AC

http://acm.pku.edu.cn/JudgeOnline/problem?id=2449

题意:经典问题:K短路

解法:dijkstra+A*(rec),方法很多

相关:http://acm.pku.edu.cn/JudgeOnline/showcontest?contest_id=1144

该题亦放在搜索推荐题中

POJ 3013 - Big Christmas Tree(基础)  AC

http://acm.pku.edu.cn/JudgeOnline/problem?id=3013

题意:最简单最短路,但此题要过,需要较好的程序速度和,还要注意精度

解法:Dijkstra

POJ 3463 - Sightseeing(中等)  AC

http://acm.pku.edu.cn/JudgeOnline/problem?id=3463

题意:最短路和比最短路大1的路的数量

解法:需要真正理解dijkstra

POJ 3613 - Cow Relays(较难)  AC

http://acm.pku.edu.cn/JudgeOnline/problem?id=3613

题意:求经过N条边的最短路

解法:floyd + 倍增,贪心

POJ 3621 - Sightseeing Cows(中等)  AC

http://acm.pku.edu.cn/JudgeOnline/problem?id=3621

题意:求一个环路,欢乐值 / 总路径最大

解法:参数搜索 + 最短路(ms 原始的bellman tle, 用spfa才过)

POJ 3635 - full tank?(中等)  AC

http://acm.pku.edu.cn/JudgeOnline/problem?id=3635

题意:最短路变形

解法:广搜

相关:http://hi.baidu.com/hnu_reason/blog/item/086e3dccfc8cb21600e9286b.html


生成树问题

基本的生成树就不放上来了

POJ 1639 - Picnic Planning(较难)

http://acm.pku.edu.cn/JudgeOnline/problem?id=1639

题意:顶点度数有限制的最小生成树

解法:贪心 + prim/kruskal

POJ 1679 - The Unique MST(基础)  AC

http://acm.pku.edu.cn/JudgeOnline/problem?id=1679

题意:判断MST是否唯一

解法:prim就行,不过还是易错的题

POJ 2728 - Desert King(中等)  AC

http://acm.pku.edu.cn/JudgeOnline/problem?id=2728

题意:所谓最优比率生成树

解法:参数搜索 + prim

POJ 3164 - Command Network(难)

http://acm.pku.edu.cn/JudgeOnline/problem?id=3164

题意:最小树形图

解法:刘朱算法,这个考到的可能性比较小吧?

POJ 3522 - Slim Span(基础)  AC

http://acm.pku.edu.cn/JudgeOnline/problem?id=3522

题意:求一颗生成树,让最大边最小边差值最小

解法:kruskal活用


连通性,度数,拓扑问题

此类问题主要牵扯到DFS,缩点等技巧

POJ 1236 - Network of Schools(基础)  AC

http://acm.pku.edu.cn/JudgeOnline/problem?id=1236

题意:问添加多少边可成为完全连通图

解法:缩点,看度数

POJ 1659 - Frogs' Neighborhood(基础) AC

http://acm.pku.edu.cn/JudgeOnline/problem?id=1659

题意:根据度序列构造图

解法:贪心,详细证明参见havel定理

POJ 2553 - The Bottom of a Graph(基础)  AC  (好题)

http://acm.pku.edu.cn/JudgeOnline/problem?id=2553

出度为0的强连通分量的所有的点

POJ 2186 - Popular Cows(基础)  AC  (好题)

http://acm.pku.edu.cn/JudgeOnline/problem?id=2186

题意:强连通分量缩点图出度为0的点

POJ 2762 - Going from u to v or from v to u?(中等) AC

http://acm.pku.edu.cn/JudgeOnline/problem?id=2762

题意:单向连通图判定

解法:缩点 + dp找最长链 (我是用 缩点+ 欧拉路判断,最后证明这方法是错的)

POJ 2914 - Minimum Cut(难) AC  (难)

http://acm.pku.edu.cn/JudgeOnline/problem?id=2914

题意:无向图最小割

解法:Stoer-Wagner算法,用网络流加枚举判定会挂

POJ 2942 - Knights of the Round Table(难)

http://acm.pku.edu.cn/JudgeOnline/problem?id=2942

题意:求双联通分量(或称块)中是否含奇圈

解法:求出双连通分量后做黑白染色进行二分图图判定

相关:http://hi.baidu.com/zfy0701/blog/item/57ada7ed104ce9d2b31cb104.html

POJ 3177 - Redundant Paths(中等) AC

http://acm.pku.edu.cn/JudgeOnline/problem?id=3177 (和3352一样)

题意:添加多少条边可成为双向连通图任意两点间有两条不共边的路径

解法:把割边分开的不同分量缩点构树,看入度

公式: 入度为1的leaf个数, ( leaf + 1 ) / 2

POJ 3352 - Road Construction(中等) AC

http://acm.pku.edu.cn/JudgeOnline/problem?id=3352 (和3177一样)

题意:添加多少条边可成为双向连通图(当删除任意一条边的时候,图还保持连通性)

解法:把割边分开的不同分量缩点构树,看入度 ( leaf + 1 ) / 2

建议对比下1236,有向图添加多少条边变成强连通图

POJ 3249 - Test for Job(基础)

http://acm.pku.edu.cn/JudgeOnline/problem?id=3249

解法:bfs / dfs + dp

POJ 3592 - Instantaneous Transference(基础) AC

http://acm.pku.edu.cn/JudgeOnline/problem?id=3592

解法:缩点,最长路,少人做的水题,注意细节 (和 3160 类似)

POJ 3687 - Labeling Balls(中等)  AC  (莫名其妙,有空再重新看)

http://acm.pku.edu.cn/JudgeOnline/problem?id=3687

解法:拓扑排序

POJ 3694 - Network(中等)

http://acm.pku.edu.cn/JudgeOnline/problem?id=3694

解法:双连通分量+并查集


2-SAT问题

此类问题理解合取式的含义就不难

POJ 2723 - Get Luffy Out(中等) AC (好题)

http://acm.pku.edu.cn/JudgeOnline/problem?id=2723

解法:二分 + 2-SAT判定

POJ 2749 - Building roads(较难) AC

http://acm.pku.edu.cn/JudgeOnline/problem?id=2749

解法:二分 + 2-SAT判定

POJ 3207 - Ikki's Story IV - Panda's Trick(基础) AC

http://acm.pku.edu.cn/JudgeOnline/problem?id=3207

解法:简单的2-sat,不过其他方法更快

POJ 3648- Wedding(中等) AC

http://acm.pku.edu.cn/JudgeOnline/problem?id=3648

解法:用2-sat做会比较有意思,但是暴搜照样0ms

POJ 3678 - Katu Puzzle(基础) AC 

http://acm.pku.edu.cn/JudgeOnline/problem?id=3678

解法:直接按合取式构图验证就行了(本质)

POJ 3683 - Priest John's Busiest Day(中等) AC

http://acm.pku.edu.cn/JudgeOnline/problem?id=3683

解法:n^2枚举点之间的相容性构图,求解2-SAT (要求输出方案)

POJ 2296 Map Labeler (中等) (第七道)AC

        http://poj.org/problem?id=2296 

        解法:上下边形成2元关系。然后构完图,求2-SAT

POJ 3905 Perfect Election(中等) (第八道) AC

        http://poj.org/problem?id=3905(好题!)

        解法: 建好矛盾,直接就是2-SAT


最大流问题

变形很多,最小割最大流定理的理解是关键

POJ 1149 - PIGS(较难) AC  (灰常好题!强烈推荐)

http://acm.pku.edu.cn/JudgeOnline/problem?id=1149

绝对经典的构图题

POJ 1273 - Drainage Ditches(基础) AC

http://acm.pku.edu.cn/JudgeOnline/problem?id=1273

最大流入门

POJ 1459 - Power Network(基础) AC

http://acm.pku.edu.cn/JudgeOnline/problem?id=1459

基本构图

POJ 1637 - Sightseeing tour(Crazy) AC

http://acm.pku.edu.cn/JudgeOnline/problem?id=1637

题意:求混合图的欧拉迹是否存在

解法:无向边任意定向,构图,详建黑书P324

POJ 1815 - Friendship(中等) AC

http://acm.pku.edu.cn/JudgeOnline/problem?i1d=815

题意:求最小点割

解法:拆点转换为边割

相关:http://hi.baidu.com/zfy0701/blog/item/a521f230b06dea9fa9018e0e.html

POJ 1966 - Cable TV Network(中等) AC

http://acm.pku.edu.cn/JudgeOnline/problem?id=1966

题意:去掉多少点让图不连通

解法:任定一源点,枚举汇点求点割集(转换到求边割),求其中最小的点割

POJ 2112 - Optimal Milking(基础) AC  (好题)

http://acm.pku.edu.cn/JudgeOnline/problem?id=2112

二分枚举,最大流

POJ 2391 - Ombrophobic Bovines(中等) AC  (好题)

http://acm.pku.edu.cn/JudgeOnline/problem?id=2391

题意:floyd, 拆点,二分枚举

相关:http://hi.baidu.com/zfy0701/blog/item/3e0006c4f73f0eaf8226acff.html

POJ 2396 - Budget(中等)

http://acm.pku.edu.cn/JudgeOnline/problem?id=2396

题意:有源汇的上下界可行流

解法:用矩阵-网络流模型构图,然后拆边

相关:http://hi.baidu.com/zfy0701/blog/item/6449d82a64e15e3e5343c1ba.html


最小割模型在竞赛中的应用

POJ 2455 - Secret Milking Machine(基础) AC   (好题)

http://acm.pku.edu.cn/JudgeOnline/problem?id=2455

二分枚举,一般来说需要写对边容量的更新操作而不是每次全部重新构图

POJ 2699 - The Maximum Number of Strong Kings(较难)

http://acm.pku.edu.cn/JudgeOnline/problem?id=2699

解法:枚举人数 + 最大流(感谢xpcnq_71大牛的建图的提示)

POJ 2987 - Firing(较难)  AC  (经典)

http://acm.pku.edu.cn/JudgeOnline/problem?id=2987

题意:最大权闭包

解法:先边权放大,第一问总量-最大流,第二问求最小割

相关:http://wywcgs.spaces.live.com/blog/cns!4D861A02A3382142!1109.entry?&_c02_owner=1

RQNOJ 最大获利Profit(中等) AC  (经典)

http://www.rqnoj.cn/Problem_556.html

最大权闭包图的特殊情况

ZOJ 2071 - Technology Trader  AC

http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=2071

也是此类型,最大权闭包图。 多加了输出 买哪些组件,使效益最大。

POJ 3084 - Panic Room(中等,好题)

http://acm.pku.edu.cn/JudgeOnline/problem?id=3084

题意:略

解法:根据最小割建模

POJ 3155 - Hard Life(很挑战一题) AC  (难)

http://acm.pku.edu.cn/JudgeOnline/problem?id=3155

题意:最大密度子图

解法:参数搜索 + 最大权闭合图,A.V.Goldberg的论文(nb解法)

最小割模型在信息学竞赛中的应用 一文中也有讲

POJ 3189 - Steady Cow Assignment(中等)

http://acm.pku.edu.cn/JudgeOnline/problem?id=3189

题意:寻找最小的区间完成匹配

解法:这题充分说明SAP的强大,纯暴力可过。更好的方法是在枚举区间的过程中不断删边和加边继续网络流过程

POJ 3204 - Ikki's Story I - Road Reconstruction(基础)

http://acm.pku.edu.cn/JudgeOnline/problem?id=3204

ZOJ 2532 - Internship(基础)

http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=2532

题意:确定边是否是某个割中的边

解法:两边dfs求割, 或暴力枚举(需要写取消某条增广路的操作(但数据弱,也许不取消也能混过))

POJ 3308 - Paratroopers(较难)

http://acm.pku.edu.cn/JudgeOnline/problem?id=3308

POJ 2125 - Destroying The Graph(难)

http://acm.pku.edu.cn/JudgeOnline/problem?id=2125

题意:最小点权覆盖

POJ 3469 - Dual Core CPU(中等)

http://acm.pku.edu.cn/JudgeOnline/problem?id=3469

题意:最小割

POJ 3498 - March of the Penguins(中等)

http://acm.pku.edu.cn/JudgeOnline/problem?id=3498

题意:满足点容量限制的网络流

解法:拆点把点容量转换为边容量,枚举汇点

ZOJ 2587 - Unique Attack(较难)

http://acm.zju.edu.cn/show_problem.php?pid=2587

题意:确定最小割是否是唯一的

解法:得理解dfs求最小割算法的本质

SPOJ 839 - Optimal Marks(难)

http://www.spoj.pl/problems/OPTM/

题意:略

解法:很经典哦,见amber的集训队论文,根据标号的每一位求最小割

SGU 326 - Perspective(中等)

http://acm.sgu.ru/problem.php?c0&problem=326

比较经典的构图法


费用流问题

可以KM解的就不放在这里,另外,感觉除非很特殊的图,一般用连续增广路的算法就够了

POJ 2175 - Evacuation Plan(中等)

http://acm.pku.edu.cn/JudgeOnline/problem?id=2175

题意:判断是否给定解是最优解,比较阴的一题

解法:根据给出的计划构造流,然后消且只消一次负圈

POJ 3422 - Kaka's Matrix Travels(中等)

http://acm.pku.edu.cn/JudgeOnline/problem?id=3422

题意:略

解法:拆点

POJ 3680 - Intervals(较难)

http://acm.pku.edu.cn/JudgeOnline/problem?id=3680

题意:略,这题还是蛮经典

解法:discuss中比较详细

SPOJ 371 - Boxes(简单)

http://www.spoj.pl/problems/BOXES/

题意:略

解法:费用流,但似乎有比网络流更好的做法

SGU 185 - Two shortest(中等)

http://acm.sgu.ru/problem.php?c0&problem=185

题意:求两条不想交的最短路径

解法:费用流,也可以最短路 + 最大流。


匹配问题

正确理解KM算法是很重要的

这里我还要说几句:最正确解最小权匹配的办法是用一个很大的数-当前边权值,而不是直接对边权取反(这样只能处理左右点相等的完全二分图,即K(n, n)

以上有可能还是说的有点问题,以后补充

POJ 1486 - Sorting Slides(中等)

http://acm.pku.edu.cn/JudgeOnline/problem?id=1486

题意:二分图的必须边

解法:需正真理解最大匹配算法,详见http://hi.baidu.com/kevin0602/blog/item/1d5be63b5bec9bec14cecb44.html

POJ 1904 - King's Quest(中等,好题)

http://acm.pku.edu.cn/JudgeOnline/problem?id=1904

题意:求二分图所有可能的匹配边

解法:虽然最终不是用匹配算法,但需要理解匹配的思想转换成强连通分量问题。

POJ 2060 -Taxi Cab Scheme(基础)

http://acm.pku.edu.cn/JudgeOnline/problem?id=2060

题意:最小路径覆盖

POJ 2594 -Treasure Exploration(中等)

http://acm.pku.edu.cn/JudgeOnline/problem?id=2594

题意:可相交最小路径覆盖

解法:先传递闭包转化下

POJ 3041 - Asteroids(基础) AC

http://acm.pku.edu.cn/JudgeOnline/problem?id=3041

解法: 简单行列匹配 

POJ 2226 - Muddy Fields(基础)

http://acm.pku.edu.cn/JudgeOnline/problem?id=2226

题意:行列的覆盖

解法:最小点集覆盖 = 最大匹配

POJ 2195 - Going Home(基础) AC

http://acm.pku.edu.cn/JudgeOnline/problem?id=2195

题意:最小权值匹配

解法:KM算法

POJ 2400 - Supervisor, Supervisee(中等)

http://acm.pku.edu.cn/JudgeOnline/problem?id=2400

题意:输出所有最小权匹配

解法:KM, 然后回溯解,汗,输入的两个矩阵居然是反过来的

POJ 2516 -Minimum Cost(中等)

http://acm.pku.edu.cn/JudgeOnline/problem?id=2516

题意:最小权值匹配或最小费用流

解法:拆点 + KM算法(只有正确的才能过),费用流(ms错的可能也能过)

POJ 3686 - The Windy's(较难)

http://acm.pku.edu.cn/JudgeOnline/problem?id=3686

题意:最小权值匹配

解法:拆点,然后尽管用KM算法去水吧,数据其实弱得不得了 O(50 * 50 * 2500) -> 16ms

相关:http://hi.baidu.com/kevin0602/blog/item/2829dc01d7143b087bec2c97.html

SPOJ 412 - K-path cover(较难)

https://www.spoj.pl/problems/COVER/

题意:略

解法:很牛叉的一道匹配

相关:http://hi.baidu.com/roba/blog/item/c842fdfac10d24dcb48f31d7.html

SGU 206. Roads(较难)

http://acm.sgu.ru/problem.php?c0&problem=206

解法:经典题目,也可以使用spoj 412那题的优化


NP问题

一般是搜索或dp解的

POJ 1419 - Graph Coloring(基础)

http://acm.pku.edu.cn/JudgeOnline/problem?id=1419

题意:图的着色

解法:搜索,可惜题目的数据真是太弱了

POJ 2989 - All Friends(难)

http://acm.pku.edu.cn/JudgeOnline/problem?id=2989

题意:极大团数量

解法:开始狂tle, 后来找了论文:Finding All Cliques of an Undirected Graph(Coen Bron & Joep Kerboscht)

ZOJ 1492 - Maximum Clique(基础)

http://acm.zju.edu.cn/show_problem.php?pid=1492

题意:图的最大团

解法:搜索,如果要求速度,可参考下相应论文


其他

不能成大类的

POJ 1470 - Closest Common Ancestors(基础)

http://acm.pku.edu.cn/JudgeOnline/problem?id=1470

题意:LCA问题

解法:tarjan或RMQ,另外输入很恶心

POJ 1985 - Cow Marathon(基础)

http://acm.pku.edu.cn/JudgeOnline/problem?id=1985

题意:树上的最长路径

解法:dp

POJ 1986 - Distance Queries(中等)

http://acm.pku.edu.cn/JudgeOnline/problem?id=1986

题意:LCA

解法:tarjan或RMQ

HOJ 11192 - Justice League(有趣的图论)

http://acm.hnu.cn:8080/online/?action=problem&type=show&id=11192&courseid=99

HOJ 11277 - New Island(有趣的图论)

http://acm.hnu.cn:8080/online/?action=problem&type=show&id=11277&courseid=109

本文转载自: http://blog.csdn.net/logic_nut/archive/2009/08/27/4491326.aspx


====================================================================================================


1062* 昂贵的

解法:枚举等级限制+最短路 

            交易过程中等级最高和最低的差小于m

1087* A Plug for UNIX (HDU1526)

解法:2分匹配

           调制器无限,用floyd传递插口转换,然后就是2分匹配

1094 Sorting It All Out

          解法:floyd + 拓扑排序

                         先用floyd判断自环(或用Tarjan,拓扑判断是否能确定序列

1112* Team Them Up! 2分图染色+DP (ZOJ1462)


1125 Stockbroker Grapevine

解法:floyd

            FLOYD,然后求每个点到其他点的最短时间和

1135 Domino Effect  (ZOJ1298)

题意:有n个关键骨牌 (1 <= n < 500),m列骨牌。整个多米诺骨牌图是联通的。

            m列骨牌描述如下:a,b,i,表示这排骨牌是在关键骨牌a到b之间的,从一头到另一头倒下需要i秒。           

            总是从n=1的骨牌开始推倒。 输出最后倒下的骨牌的倒下时间和位置(最后倒下的是某个关键骨牌,或者某两个关键骨牌之间)

                       数据二的图形,可看出,最后倒的在2,3中间位置。

解法:最短路

          求出骨牌1到其他骨牌的最短路,最后倒下的是某个关键骨牌,或者某两个关键骨牌之间

1149* PIGS

题意:有M个猪圈(M<=1000),每个猪圈里初始时有若干头猪

             一开始所有的猪圈都是关闭的.

             一次来了N个顾客(N<=100) , 每个顾客分别会打开指定的几个猪圈,从中买若干头猪

             每个顾客分别有他能够买的数量的上限.

             每个顾客走后,他打开的猪圈中的猪可以任意给调换到其他开着的猪圈里,然后所有猪圈从新关上.

             问:总共最多能卖出多少头猪.

解法:分层网络流

             可以把猪圈分层建边,但是节点数要10W。有更优秀的建边方法

             请移步这里

1161* Walls

解法:floyd

      将区域作为顶点,如果两个区域邻接(有公共边),就连边,权值为1 

     注意:输入区域的点的顺序(顺逆时针)

      以此建图,用floyd算法算出每个顶点间的最短距离,然后就是穷举每个顶点

      使每个俱乐部的成员到(所在村庄)达该顶点的距离之和最小

      村庄到区域的距离即:将村庄作为点的区域(顶点)到枚举顶点的距离

1201 Intervals

解法:差分约束

            约束条件:s[b]-s[a-1] >= c  , 0 <= s[i+1]-s[i] <= 1

1236* Network of Schools 

题意:问添加多少边可成为完全连通图

解法:基础强联通

            缩点,看度数

1251 Jungle Roads

解法:基础最小生成树

1273 Drainage Ditches

解法:基础最大流

          注意输入时先输边数n,再是点数m

1274 The Perfect Stall

题意:牛和挤奶器最大匹配

解法:基础二分匹配

1275* Cashier Employment  (神题)

解法:差分约束

            ti[i] 表示从 i 开始工作的人数 ,s[i]  表示 0-i 总共雇佣了多少人 , r[i]  表示 i 所需的至少人数

            ti[i-7]+ti[i-6]+...ti[i] >= r[i]   ( 表示前8小时开始工作的人数 )

            设:s[i]-s[i-8] = ti[i-7]+ti[i-6]+...ti[i]

            0 <= S[i]-S[i-1] <= ti[i]

           约束条件:①S[i]-S[i-1] >= 0  ②S[i-1]-S[i] >= -ti[i]

                               ③S[i]-S[i-8] >= r[i] ( i>=8 )  ④S[23]+S[a]-S[a+16] >= r[i] ( i<=7 )  ==> S[a]-S[a+16] >= r[i]-S[23]

                               ⑤*注意:S[24]-S[0]>=mid  //这句话要记得

1325 Machine Schedule

解法: 二分匹配(最小点覆盖)

            最小点覆盖:选取最少的点数,使这些点和所有的边都有关联(选择最少的点覆盖所有的边)

1364 King

解法:差分约束

           gt: s[a+b]-s[a-1]>c  ==>  s[a+b]-s[a-1]>=c+1

            lt: s[a+b]-s[a-1]<c ==>  s[a-1]-s[a+b]>(-c)

            超级源点: s[i]-s[n+1] >= 0

1422 Air Raid

解法:二分匹配 (最小路径覆盖)

          (伞兵) 最小路径覆盖:用最少的不相交简单路径覆盖所有结点。 

          有向图:ans = n - match() , 无向图: ans = n - ( match() +1 ) / 2

1459 Power Network 

解法:基础网络流

1466 Girls and Boys

解法:二分匹配 ( 最大独立集 ) 

            最大独立集 = 顶点数 - 最小点覆盖

            由于最小点覆盖所有边,所以去掉这些点后,剩下的点之间就没有关联边,即互相独立

1469 COURSES  (HDU1083)

解法:二分匹配(完全匹配 )

1502 MPI Maelstrom

题意:计算从1发送信息到其他n-1个点最短时间 , 并且信息是同时发出去的

解法:最短路

            计算1到其他n-1个点的最短时间,再取最大即可(因为信息是同时发的)

1511* Invitation Cards (HDU1535)

解法:最短路

            来回最短路(单向):  正向建边 , 可以计算出S到任意点的最短路。

                                                反向建边,那么S到任意点的最短路就相当于从任意点回来S的最短路

1637* Sightseeing tour 

解法:混合欧拉回路

            单向边:无用,删  in[b]++ ; out[a]++

            双向边:随意定向  in[b]++ ; out[a]++

          【建图】x = in[i]-out[i] 

                           ①如果x是奇数,肯定不存在欧拉回路

                           ②如果x>0 (入>出) 连 i -> T  容量: x/2

                           ③如果x<0 (入<出) 连 S -> i  容量:-x/2         

        【判断】是否满流

1716 Integer Intervals 

题意:和1201一样

解法:差分约束

             ① s[b+1]-s[a]>=2   ② 0 <= s[i+1]-s[i] <= 1 

             ③ s[i]>=0 (第③个是建超级源点的条件,这里可以不要)

1724* ROADS 

解法:带限制的最短路

           方法①  将每个点拆分,开二维 dis[ i ][ j ] 记录。表示到达节点 i 总共花费 j 的金钱所需的最短路 ( j<=K )

           方法②广搜bfs() + 优先队列

1734 Sightseeing trip

             解法:Floyd 求最小环 + 输出路径

[cpp]   view plain copy
  1. void floyd() { // 最小环模板  
  2.    int i,j,k,w,v;  
  3.    d=inf;  
  4.    for(i=1;i<=n;i++)  
  5.       for(j=1;j<=n;j++) path[i][j]=j,dis[i][j]=e[i][j];  
  6.   
  7.    for(k=1;k<=n;k++) {  
  8.   
  9.       //新增部分,求最小环  
  10.       for(i=1;i<k;i++) if(e[i][k]!=inf)  
  11.          for(j=1;j<i;j++) if(e[k][j]!=inf) {  
  12.             if(dis[i][j]==inf) continue;  
  13.             if(d>dis[i][j]+e[i][k]+e[k][j]) {  
  14.                d=dis[i][j]+e[i][k]+e[k][j];  
  15.             // 记录路径  
  16.                len=0; s[0]=k; v=i;  
  17.                while(v!=j) s[++len]=v,v=path[v][j];  
  18.                s[++len]=j;  
  19.             }  
  20.          }  
  21.       //通常的floyd部分  
  22.       for(i=1;i<=n;i++) if(dis[i][k]!=inf)  
  23.          for(j=1;j<=n;j++) if(dis[k][j]!=inf)  
  24.             if(dis[i][j]>dis[i][k]+dis[k][j])  
  25.                dis[i][j]=w , path[i][j]=path[i][k];  
  26.    }  
  27. }  


1780* Code  (好题)

题意:要求所有的n位数编码成一个数字串,每个n位数只出现一次

解法:欧拉回路

可以把n位数看成边,那么可以把它的前n-1位看成点A,后n-1一位看成点B,

那么它就是A->B的一条边。找一次欧拉回路就行了。

此题要用栈模拟递归函数!!!

1789 Truck History

解法:最小生成树( prim 或 kruskal)

1797 Heavy Transportation 

解法:最小生成树 或 最短路 或 dfs

            二分枚举下限,用最小生成树 或 最短路 或 dfs 判断 1 和 n 是否连通

1847 Tram

解法:简单最短路

1904* King's Quest 强联通


1949 Chores

解法:最短路

            反向建图  建立超级源点S=0 ,连接入度为0 的点,边权为 0

            点 i 和  prerequisites ( j ) , i 连 j ,边权为 time[ i ]

            然后求最长路

            PS: 正向建边,不知道哪里错了,一直TLE

2060 Taxi Cab Scheme 

解法:分匹配 (最小路径覆盖)

2075 Tangled in Cables 

解法:最小生成树

2112 Optimal Milking 

解法:二分+网络流

          二分最远距离,建可行边,判断是否符合要求

2125 Destroying The Graph

解法:最小割(最小点权覆盖)

最小点权覆盖:最小点权覆盖所有的边 (等同于最大独立集)

拆点并将点权转成边权。

i 和 i+n 分别表示出入,S 连 i 删出边的权, i+n 连 T 删入边的权。 求最小割。

2135 Farm Tour

题意:无向图,从起点到终点,再从终点到起点。不能走重复的边。求最短路程。

解法:费用流

相当于找两条从起点到终点不重复的路径。
S 连起点,容量2 费用0 , 
 终点连 T,容量2 费用0

拆边:  i 连 j ,j 连 i 容量1 , 费用边权w


2139 Six Degrees of Cowvin Bacon

题意:  类似 HDU1869 六度分离

这里求的是以哪个人 i 为中心,到其他人的分离度的平均值最小,求最小值

解法: Floyd

相当于求 i 到其他人的距离总和最小, 最后 avg = sum*100 / (n-1) 即可

2226 Muddy Fields

题意:用最少的木板覆盖所有的muddy,且木板不能覆盖到草地

解法:二分匹配 (行列匹配)

拆行和拆列(一行拆成多行),把每一行连续的 * 看做一“行”,把每一列连续的 * 看做一“列”

再对每一个 * 所对应的 “行” 和 “列” 连边,求二分匹配

2230 Watchcow

题意:无向图,从1出发经过每条边2次回到1。输出路径

解法:欧拉回路

拆无向边为有向边,a->b b->a ,就变成了每条边经过一次的欧拉回路。从1做一次欧拉就可以了

2239 Selecting Courses

解法: 基础二分匹配

2267* From Dusk till Dawn or: Vladimir the Vampire 最短路


2289 Jamie's Contact Groups  (HDU1669)

解法:二分+二分图多重匹配 (或 二分答案+网络流)

2296 Map Labeler 

解法:2-Sat (二分枚举答案)

2337 Catenyms

解法:欧拉路径

①用并查集判断连通性

②判断入度和出度是否满足

    欧拉回路-> 入度=出度

    欧拉路径-> 只有一个,入度-出度=1 ; 只有一个,出度-入度=1

2349 Arctic Network

题意: 有卫星电台的城市之间可以任意联络。没有卫星电台的城市只能和距离小于等于D的城市联络。题目告诉你卫星电台的个数S,让你求最小的D.

做最小生成树,去掉最长的S条边后,剩下最长的边就是D.

也就是求最小生成树中第S+1长的边。

解法:最小生成树

2367 Genealogical tree

解法:基础拓扑排序

2387 Til the Cows Come Home

解法:基础最短路

2391* Ombrophobic Bovines

解法: 二分+网络流

S 连 i (牛)  容量: 牛的数量

i+n (棚) 连 T 容量: 能hold牛的个数

i 连 j+n 容量:inf  (表示可行流)

PS:  const ll inf=9999999999999999ll;  up=inf (上界)    WA

        up=9999999999999999ll                                              AC

2394 Checking an Alibi

题意: 给你无向图,两点间花费的时间。再给你每个牛所在的位置。

给定一个time , 问你那些牛可以在time时间内到达 1

解法:最短路

2396* Budget 上下界网络流


2421* Constructing Roads

解法:基础最小生成树

2446 Chessboard

题意:去掉k个洞,剩下的点能不能用1X2的矩形完全覆盖

解法:二分匹配

相连的2点进行匹配,判断是否是完全匹配

2455 Secret Milking Machine

解法:二分+网络流

注意重边也要!

2457 Part Acquisition

解法:最短路 (输出路径)

2472 106 miles to Chicago

解法:最短路

求边乘积最大,将其化成对数,就是加起来最大。让后就是裸的最长路了 

2485 Highways

解法:基础最小生成树

2516 Minimum Cost 费用流


2536 Gopher II

解法:基础二分匹配

2553* The Bottom of a Graph

法:强连通

出度为0的点,它们能到达的点V,V都能到达它们

2570 Fiber Network floyd


2584 T-Shirt Gumbo 网络流


2594* Treasure Exploration

解法:floyd传递性+二分匹配(最小路径覆盖)

2723 Get Luffy Out

解法:二分+2-Sat

2-Sat的本质就是:一件物品选了,对另一件物品的影响。

每个物品有2个状态: 选,不选 。即 x 和 ~x

如 x y 。选了x,y钥匙就会消失。那么选了x就不能选y, 即选了x就选 ~y (非y)

2724 Purifying Machine 2分匹配


2728 Desert King 最优比例生成树


2749* Building roads (好题!)

解法:二分+2-Sat

建矛盾: hate的必须分开, 

  like的必须栓在同一个点

 距离矛盾:① dis1[ i ] + dis1[ j ] > mid

                       ② dis2[ i ] + dis2[ j ] > mid

                       ③ dis1[ i ] + dis2[ j ] + dis > mid

                       ④ dis2[ i ] + dis1[ j ] + dis > mid

记:dis1 表示 cow 到 s1 的距离 , dis2 表示 cow 到 s2 的距离 , dis 表示 s1 到 s2 的距离。

2762 Going from u to v or from v to u? 

解法:强连通+拓扑

强连通缩点,同一分量的不需要考虑了。

不属于同一强连通分支的点就用拓扑排序来判断,如果某次删除点的时候发现两个入度为0的点,则说明这两个点只能由已经被删掉的点到达。

也就是说这两个点互相不可达。所以只要同时出现了多于一个的0入度的点,那么这个图一定是不符合题目要求的,输出"No".

注:用欧拉路径判断是错的,以下数据

5 8
1 2   1 3   1 5   2 4   2 5   3 4   5 3   5 4

2949* Word Rings 差分约束


2983 Is the Information Reliable? 

解法:差分约束

P:  c<=s[a]-s[b]<=c

V:  1<=s[a]-s[b]

超级源点: addedge( 0 , i , 0 )

注意:不要忘记建超级源点!!!

2987 Firing 最小割(求解正确性??)


3020 Antenna Placement 2分匹配
3041 Asteroids 2分匹配

3072* Robot 最短路

3114 Countries in War 强联通+最短路

3160 Father Christmas flymouse 强联通+最长路
3164 Command Network 最小树形图
3169 Layout 差分约束

3177 Redundant Paths 双联通分量

3189 Steady Cow Assignment 网络流

3204 Ikki's Story I - Road Reconstruction 最大流
3207 Ikki's Story IV - Panda's Trick 2分图
3216 Repairing Company 2分匹配
3228 Gold Transportation 网络流
3255 Roadblocks 最短路
3259 Wormholes 最短路
3268 Silver Cow Party 最短路
3275 Ranking the Cows dfs

3281 Dining 最大流 

3308 Paratroopers 最小割
3310 Caterpillar
3311 Hie with the Pie floyd
3328 Cliff Climbing 最短路
3343 Against Mammoths 2分匹配

3352 Road Construction 桥 

3439 Server Relocation 最短路

3463 Sightseeing 最短路
3469 Dual Core CPU 最小割 

3487 The Stable Marriage Problem 稳定婚姻

3522 Slim Span 最小生成树

3594 Escort of Dr. Who How 最短路

3615 Cow Hurdles 最短路

3623 Wedding 2-sat

3653 Here We Go(relians) Again 最短路
3659* Cell Phone Network 最小支配集
3660 Cow Contest 拓扑
3662* Telephone Lines 最短路
3678 Katu Puzzle 2-sat
3683* Priest John's Busiest Day 2-sat求解
3687 Labeling Balls 差分约束 或 拓扑
3692 Kindergarten 2分匹配

3694 Network 无向图缩点

3723 *Conscription 最小生成树

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值