Luogu P338 最小費用最大流

2021-08-19 03:44:28 字數 893 閱讀 2495

給出乙個網路圖,以及其源點和匯點,每條邊已知其最大流量和單位流量費用,求出其網路最大流和在最大流情況下的最小費用。

對於30%的資料:n<=10,m<=10

對於70%的資料:n<=1000,m<=1000

對於100%的資料:n<=5000,m<=50000

在 edmonds-karp求解最大流的基礎上,

用bfs尋找一條增廣路改為用spfa尋找一條單位費用之和最小的增廣路,在在殘量網路上求最短路,即可求出最小費用最大流。注意:一條反向邊y—>x的費用應設為-x到y的單位費用.

#include 

#define inf 2333333

#define m 50005

#define n 5005

using

namespace

std;

int n,m,cnt=1,maxflow,ans,ls[n],v[n],incf[n],dis[n],pre[n];

struct edge e[m*2];

void add(int u, int v, int w, int f)

bool spfa(int s, int t)

}v[u]=0;

}return dis[t]!=inf;

}void update(int s, int t)

maxflow+=incf[t];

ans+=dis[t]*incf[t];

}void edmonds_karp(int s, int t)

int main()

edmonds_karp(s,t);

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

return

0;}

mysql最小費用最大流問題 最小費用最大流問題

複雜網路中,單源單點的最小費用最大流演算法 mcmf 應用廣泛。在實際網路問題中,不僅考慮從 vs到 vt的流量最大,還要考慮可行流在網路傳送過程中的費用問題,這就是網路的最小費用最大流問題。最小費用最大流問題的一般提法 已知容量網路 d v a c 每條弧 vi,vj 除了已給出容量 cij 外,...

mysql最小費用最大流問題 最小費用最大流問題

最小費用最大流就是在原來求最大流的基礎上,假設每條邊還有乙個單位流量所需要的費用,因為最小費用的出現,原本的平行邊變得有意義,並且允許反向增廣,基本上就是將原本bfs改為進行一次bellmanford演算法尋找最短路徑,只要初始流是該流量下的最小費用可行流,每次增廣後的新流都是新流量下的最小費用流。...

mysql最小費用最大流問題 最小費用最大流

最小費用最大流 修改的dijkstra ford fulksonff演算法 修改的dijkstra其實和johnson演算法的思想是一致的。乙個求最小費用最大流的樸素演算法是這樣的 1求最小費用增廣路2判斷是否存在增廣路,否的話演算法終止。3增加增廣路上邊的流量4在增廣路上新增必要的逆向負權邊5go...