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 ...