最大流 EK演算法

2021-09-08 05:50:04 字數 689 閱讀 2688

ek演算法是求最大流的一種容易實現、**易懂的演算法。

ek演算法仍然是乙個基於增廣路的演算法,思路非常簡單。每次從s嘗試找到一條到達t的路徑,路徑上最小的殘留量大於0,那麼我們就可以把這條路上的最小殘留量減去,累加到ans裡。繼續bfs直到找不到位置,此時ans就是最大流。

ek增廣路演算法的時間複雜度為o(nm^2)。但是在實際運營中遠遠達不到這個上界,效率較高,一般認為,可以處理10^3~10^4內規模的網路。

//??????ek??

#include#include#include#include#includeconst int inf=1<<29,n=2010,m=20010;

int n,m,s,t,tot,maxflow,ver[m],edge[m],next[m],v[n],lin[n],incf[n],pre[n];

using namespace std;

void add(int x,int y,int c)

bool bfs()}}

return 0;

}void update()

maxflow+=incf[t];

}int main()

while(bfs()) update();

printf("%d\n",maxflow);

}return 0;

}

最大流 EK演算法

ek演算法。特別暴力 時間複雜度o v e 2 所以競賽中我們一般用效率更高的dinic演算法 ek演算法核心就是殘量網路圖,殘量指的就是每條路上剩餘的流量。不難發現,只要能在殘量網路圖上找到一條從源點到匯點的路,就能在這一條路上加流量,所加的流量就是在這條路徑上每條邊殘量取個min,一點一點的加就...

最大流EK演算法模板

include ek 演算法。時間複雜度 ve 2 include includeusing namespace std const int maxn 100 const int inf 1 30 1 int g maxn maxn int flow maxn pre maxn bool vis m...

最大流問題 EK演算法

最大流的目的是將最多的物品從源點s通過其他點的中轉,運送到匯點t,每條邊具有能運送物品的上限。從s運送出來的物品數目等於到達t的物品數量。針對圖a,其中每條邊代表運送物品的上上限,圖b是其乙個可行流 a b,a是實際運送物品,b是物品上限 其結果為9,但不是最大流11,這樣的可行流有多個,而最大流就...