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 求最小環 + 輸出路徑

  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 最小生成樹

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章