網路流 最大流Dinic演算法

2022-03-19 23:55:41 字數 1075 閱讀 8527

突然發現到了新的一年什麼東西好像就都不會了涼涼

建殘量網路圖

在殘量網路圖上跑增廣路

重複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演算法的初步認識 目前部落格轉移 簡單說一說 有乙個起點 源點 和乙個終點 匯點 它們之間用很多直徑大小不一的管子連在一起,為什麼要用大小不一的管子,假如這些都是水管 那麼你要做的就是 算出從源點到匯點最大可以流入多少水。顯然,對於一條路上,它的最大流是這條路上直徑最小的管...