原创 poj2112 Optimal Milking

由於之前沒做過多重二分匹配問題,所以一直沒有頭緒,折磨了我好久,後來看到別人用二分查找+floyd+網絡流 來實現,自己也就用這種方法A掉了。 具體方法是: 1)先用floyd求到任意milking machine到 任意奶牛之間距離 2

原创 poj3565 Ants

使用KM算法,我寫過一個,思路是把螞蟻和樹分爲兩個集合,但是莫名其妙的錯了,然後在網上又查了一段代碼,和我的方法相同,甚至代碼內容差不多,但人家A了,鬱悶啊。。。求助。 錯誤代碼: #include<iostream> #include<

原创 poj Drainage Ditches

模版題,很多人A.模版:http://blog.csdn.net/rookie_algo/article/details/7803313#include<iostream> using namespace std; const int i

原创 網絡流算法總結 Edmond-Krap + SAP(GAP優化)+Dinic

花了幾天來學最大流問題,折騰的我頭都暈了,下面就來讓我做個總結。 首先介紹一下網絡流,流網絡G=(V,E)是一個有向圖,其中每條邊又有一個非負容量c(u,v)>=0,如果存在一條邊(u,v)不屬於G,那麼可以認爲c(u,v)=0。網絡流

原创 poj1459 Power Network

水題,難的的1A。。。 網絡流SAP,增加一個超級源和一個超級匯,而發電站的最大發電量和用電站的最大用電量分別記爲從超級源到發電站的最大流量和用電站到超級匯的最大流量。 //428K 469MS #include<iostream> u

原创 poj3026 Borg Maze

這題的測試數據非常坑,一直WA,看了discuss才知道是因爲,測試數據後面有還有空格,所以在輸入x,y之後要加gets(temp),這道題的解決方法是,先用BFS在查找每兩點之間的最短距離,構造出一幅無向圖,然後再用prim算法,求出這

原创 poj3020 Antenna Placement

還是一道二分圖最大匹配問題,求最小路徑覆蓋,解題的關鍵在於如何把城市圖轉化爲二分圖。由於題目說,最多覆蓋兩個城市,可知每兩個鄰接的城市之間都會有關係。因此把城市編上號就可以構造出一個二分圖了。我們需要找的是“最少的關係覆蓋所有頂點”,很容

原创 poj Secret Milking Machine

題意:有n個點,之間有p條路徑(無向,可重複),要求求出要同時存在T條路徑(每條邊都不重複的條件下),路徑中邊的最短距離。 方法:二分搜索+最大流,二分枚舉所有的距離,求出最短的,再構造網絡(存在一條邊兩點之間的通路小於枚舉值,兩點間的流

原创 poj 1815 Friendship

拆點法,把一個點拆爲兩個,之間的流量爲點的權值,這樣求割點的集合就變爲了求割邊的集合。#include<iostream> using namespace std; const int maxn=405; const int INF=0x

原创 poj2367 Genealogical tree

第一道拓撲排序題,非常水的,就是最基礎的實現算法就行。 代碼如下: #include<iostream> using namespace std; const int MAXN = 105; int edge[MAXN][MAXN]; i

原创 poj1716 Integer Intervals

初學差分約束,差分約束的概念還是比較好理解的,但是在題目中的應用對我來說還是不熟練。 這道題就是用一個數組dis[x]來記錄0-X區間內,點的個數,那麼列出3個式子: 1、s[bi]-s[ai-1]>=2 2、s[i+1]-s[i]>=0

原创 poj2195 Going Home

題義:在一個圖上,n個人回n個家,可以路過家門而不進去,圖中m代表人,H代表家,每人走一步,需要花費1元,求要是這些人都回家,最少花多少。 分析:看到題目後首先可以想到的就是人和家是2個集合,人不能與人相連,家也不能與家相連,那麼就可給人

原创 poj3259

第一次使用bellman-ford,與迪傑斯特拉相比,同樣是求單源最短路勁,但是bellman-ford可以求負權最短路。方法就是對邊進行鬆弛操作,這題基本就是算法的實現而已,並沒有什麼變形。 /*bell-manford and

原创 poj2446 Chessboard

判斷是否是完全匹配,和poj3020相似,給格子編號,由於水平不夠效率很低,很多大神用的完全匹配,有一點值得學習,就是根據i+j的奇偶性,把點分成兩個集合。 #include<iostream> #include<vector> usi

原创 poj1789 Truck History(最小生成樹)

我是通過prim來做的,代碼寫得很水,一直超時。。。最後1300ms過的,看到別人用相同的方法的只要300ms,一直搞不懂爲啥。我的思路是,把題目轉化爲求最小生成樹。兩個truck的不同可以看爲兩點之間的權值。那麼,就可以構造出一幅無相完