突然發現到了新的一年什麼東西好像就都不會了涼涼
建殘量網路圖
在殘量網路圖上跑增廣路
重複1直到沒有增廣路(注意乙個殘量網路圖要盡量把價值都用完,不然會浪費建圖的時間)
#include#include#include#include#include#include#include#include#includeusing namespace std;
#define ll long long
#define re register
#define file(a) freopen(a".in","r",stdin);freopen(a".out","w",stdout)
inline int gi()
while(ch>='0' && ch<='9')
return f*sum;
}const int n=10010,m=100010,inf=1e9+10;
int n,m,s,t,flow;
class graph
}} return dep[t];
} int dfs(int u,int flow)
}} return 0;
}public:
void add(int u,int v,int val)
void init()
void dinic()
} }}maxflow;
int main()
maxflow.dinic();
printf("%d\n",flow);
return 0;
}
考慮我們在dfs搜尋的時候,是不是有什麼東西重複了?
顯然搜尋過的就不可能再來了(因為已經被壓榨乾淨了)
然後就可以修改一些dfs的過程。
int dfs(int u,int flow)
} }return 0;
}void dinic()
}}
優化還是比較明顯的。
大家可以在看完之後切了這道題目
當然陸續將會推出hlpp與isap的總結。
網路流最大流 Dinic演算法
o n 2 m 的演算法 比ek的o n m 2 優很多 ek通常解決10 3 10 4規模的網路 而dinic能解決10 4 10 5的網路 dinic演算法的思想也是分階段地在層次網路中增廣。它與最短增廣路演算法不同之處是 最短增廣路每個階段執行完一次bfs增廣後,要重新啟動bfs從源點vs開始...
網路流 最大流之Dinic演算法
網路流主要解決三種問題 最大流 最小流和費用流。最大流演算法主要有三種 ek演算法 dinic演算法 sap演算法。本篇部落格是關於dinic演算法的。最壞的情況下,dinic演算法將達到複雜度o v e2 o v2e 1 include 2 include 3 include 4 include ...
網路流 最大流 Dinic演算法的初步認識
網路流 最大流 dinic演算法的初步認識 目前部落格轉移 簡單說一說 有乙個起點 源點 和乙個終點 匯點 它們之間用很多直徑大小不一的管子連在一起,為什麼要用大小不一的管子,假如這些都是水管 那麼你要做的就是 算出從源點到匯點最大可以流入多少水。顯然,對於一條路上,它的最大流是這條路上直徑最小的管...