費用流 MCMF演算法

2021-09-29 06:20:59 字數 1332 閱讀 7390

min cost max flow演算法

luogu p3381

實現思路

鄰接表儲存時注意

費用具有對稱性,

流量具有守恆性

spfa()根據邊的容量\流量\花費來找到增廣路, 以及維護每點的入邊pre[i],和判斷是否還有增廣路ek()路程:

#include

#include

#include

#include

using namespace std;

const

int inf =

1e9+5;

const

int maxn =

5005

;const

int maxm =

1e5+5;

struct edge edge[maxm]

;int n,m,source,sink;

int tot;

int head[maxn]

,dist[maxn]

,pre[maxm]

;bool vis[maxn]

;void

addedge

(int u,

int v,

int c,

int cost)

bool spfa

(int source,

int sink)}}

}if(pre[sink]==-

1)return0;

return1;

}intek(

int source,

int sink,

int&cost)

i = pre[sink]

;while

(i !=-1

) maxflow +

= delta;

}return maxflow;

}int

main()

int cost =0;

int maxflow =

ek(source,sink,cost)

; cout << maxflow <<

" "<< cost << endl;

return0;

}

MCMF 最小費用最大流

在乙個網路中每段路徑都有 容量 和 費用 兩個限制的條件下,此類問題的研究試圖尋找出 流量從a到b,如何選擇路徑 分配經過路徑的流量,可以達到所用的費用最小的要求。如n輛卡車要運送物品,從a地到b地。由於每條路段都有不同的路費要繳納,每條路能容納的車的數量有限制,最小費用最大流問題指如何分配卡車的出...

費用流演算法 ZKW

連續研究了幾天的費用流,乙個屬於自己版本的zkw費用流出爐了。zkw神牛發明的zkw演算法可以說是編寫簡單,速度也非常不錯。個人還給zkw加了乙個當前弧優化,km演算法中的鬆弛變數優化與連續增廣優化,不過加了這些優化後zkw的全部過程也只有30行。感覺上zkw就是優化了spfa求最短路的過程,因為s...

網路流 費用流zkw演算法

進行spfa每次對殘餘網路求最短路,記錄前驅,然後跑這條增廣路,更新答案,直到源點和匯點不連通位置 我們可以類似dinic,在spfa求完每個點到源點的距離之後,再像dinic一樣進行增廣,這樣就能多路增廣,並且還可以加當前弧優化。include using namespace std const ...