洛谷P3381 最小費用最大流模板

2022-08-13 23:36:22 字數 853 閱讀 6056

同樣是增廣路演算法,但與最大流dinic演算法不同的是:

貪心每次走費用最短路(普通最大流所有邊費用都相當於是1,最短路直接bfs就行了)

不能多路増廣。

由於是增廣路演算法,到不能增廣時,根據最大流最小割定理,保證當前流是最大流。

**:(注意:spfa手寫佇列要注意大小啊……害得我調了好長時間……乾脆用stl好了)

#include#include#include#include#include#define inf 2147483647

using namespace std;

const int n = 5005;

typedef long long ll;

struct nodepool[n*20],*h[n];

int cnt;

void addedge(int u,int v,int f,int len)

int s,t,n;

int d[n],pre[n],vis[n],a[n];

node *pree[n];

queueque;

int cost,flow;

bool bfs()}}

if(d[t]==inf) return false;

cost+=d[t]*a[t];

flow+=a[t];

u=t;

while(u!=s)

return true;

}void mcmf()

int main()

mcmf();

printf("%d %d\n",flow,cost);

return 0;

}

洛谷 P3381 模板 最小費用最大流

乙個網路圖雖然最大流確定,但達到最大流的方案並不唯一。如果對於每條邊,都加乙個費用f,表示這條邊流過單位流量的代價,求達到最大流時的最小費用,這就是最小費用最大流問題。解決方法 ek費用流或zwk費用流。這裡只講ek費用流。採用貪心的思想。我們每次增廣時都選擇費用最小的一條。這樣,因為最大流是確定的...

洛谷 P3381 模板 最小費用最大流

題目鏈結 mcmf 最小費用最大流 由於要使用反向邊。定義乙個h i 表示從匯點到i的最短距離。對於一條邊e v,u e.cost e.cost h v h u 這樣可以保證圖中沒有負權邊的存在,這樣就可以使用dij來求最短路。每次求一條最短路,然後通過這條最短路更新最大流,直到找不出最短路為止。i...

洛谷 P3381 模板 最小費用最大流

洛谷 p3381 模板 最小費用最大流 include include include include include include include include include define maxe 50005 define maxn 5005 define inf 0x3f3f3f3f t...