原创 匈牙利算法

備個份,後面用到再加題目 M67大神的幾句話講解:http://www.matrix67.com/blog/archives/39 二分圖最大匹配問題匈牙利算法     研究了幾個小時,終於明白了。說穿了,就是你從二分圖中找出一條路徑

原创 uva820 最大流模板題

注意以下輸出格式,還有就是有重邊。 這是鄰接表的做法: #include<iostream> #include<cstring> #include<cstdlib> #include<cstdio> #include<cmath> #i

原创 POJ 2240 Bellman算法判正權迴路 floyd算法

又WA了好多次,主要錯誤是map沒有clear,判重時直接map.count()了,少一個==0,對每一個點都要做bellman()直到找到正權迴路。 #include<iostream> #include<cstring> #incl

原创 POJ 3259 BellmanFord算法和poj2240幾乎一樣

注意重邊和開始點不一定是1 #include<iostream> #include<cstring> #include<cstdlib> #include<cstdio> #include<cmath> #include<string>

原创 uva11082 最大流和網絡流建模

主要是建模想不到,下面兩篇講的不錯。 http://www.cnblogs.com/xcw0754/p/4646140.html http://www.cnblogs.com/AOQNRMGYXLMV/p/4280727.html 就是將

原创 uva10801 Dijkstra

注意在更新maps時有重邊,取最小值。dijkstra時,從零開始的也加了60,輸出時需要減去60,但是k=0除外。 #include<iostream> #include<cstring> #include<cstdlib> #incl

原创 poj 2315 最小費用最大流入門題

增加一個超級源點和超級匯點,容量爲2,費用爲0。 有重邊,且爲無向邊。所以要用鄰接表,需要建4條邊。 #include<iostream> #include<cstring> #include<cstdlib> #include<cst

原创 POJ 2387 裸的dijkstra

注意起點爲n,終點爲1。因爲這貢獻了幾個WA。 #include<iostream> #include<cstring> #include<cstdlib> #include<cstdio> #include<cmath> #includ

原创 uva821 floyd

裸的Floyd算法 #include<iostream> #include<cstring> #include<cstdlib> #include<cstdio> #include<cmath> #include<string> #inc

原创 POJ 1860 Currency Exchange Bellman-Ford算法求單源最短路徑並判斷是否有正權迴路

#include<iostream> #include<cstring> #include<cstdlib> #include<cstdio> #include<cmath> #include<string> #include<map>

原创 poj3268 Silver Cow Party 單源最短路徑dijkstra算法

        其他牛先從自己家走到x牛家,再從x牛家走回自己家,問這些牛走的最長路。開始我幼稚的遍歷了每個點做dijkstra,不出意外TLE了。其實一頭牛經過一段路到了x,我們只需要將所有有向路反向,再從x找其他點的最短路,就是其他點

原创 國家集訓隊論文分類整理

http://www.cnblogs.com/AbandonZHANG/archive/2012/07/21/2601889.html 距離ACM/ICPC的時間越來越少了,選擇性地看一些集訓隊論文是很有必要的。 (在此給已經看過所有論文

原创 uva1660 最大流

點連通度和邊連通度問題都可以轉化爲最小割最大流問題。用拆點法,相同點連接一條邊,容量爲1,不同點連2條邊i+1→j,j+1→i,容量爲INF。 注意scanf的用法,還可以這麼用,以前不知道。 #include<iostream> #in

原创 POJ 1273 最大流入門題 Edmonds_Karp算法

參考:http://www.cnblogs.com/zsboy/archive/2013/01/27/2878810.html EK算法的核心: 反覆尋找源點s到匯點t之間的增廣路徑,若有,找出增廣路徑上每一段[容量-流量]的最小值del

原创 uva1664 並查集

先對所有邊按容量由大到小排序,然後遍歷每條邊。對於一條邊AB,先找到他們各自的並查集,如果沒有就初始化他們自己的並查集和並查集中元素的個數cnt,然後判斷中心城市在A並查集或者B並查集那個好,即cap[A]+theEdge[i].c*cn