P3381 模板 最小費用最大流

2021-09-28 13:10:34 字數 669 閱讀 2463

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

#include#define ll long long

#define inf 0x3f3f3f3f

using namespace std;

const int n = 1e5 + 10;

int n, m, s, t, h[n], cnt, dis[n], inq[n], pre[n], last[n], flow[n], ans1, ans2;

struct node no[n];

void add(int u, int v, int w, int c) ;

h[u] = cnt++;

no[cnt] = node;

h[v] = cnt++;

}int spfa() }}

return dis[t] != inf;

}void mcmf()

ans1 += flow[t];

ans2 += flow[t] * dis[t];

}}int main()

mcmf();

printf("%d %d", ans1, ans2);

return 0;

}

P3381 模板 最小費用最大流

如題,給出乙個網路圖,以及其源點和匯點,每條邊已知其最大流量和單位流量費用,求出其網路最大流和在最大流情況下的最小費用。第一行包含四個正整數n m s t,分別表示點的個數 有向邊的個數 源點序號 匯點序號。接下來m行每行包含四個正整數ui vi wi fi,表示第i條有向邊從ui出發,到達vi,邊...

P3381 模板 最小費用最大流

我其實不會ek,只會死記dinic,事實證明ek演算法非常的淺顯易懂。ek演算法是怎麼弄的?說白了就是乙個bfs找增廣路徑,只要有流量可以流,就去增廣一波。如果探到了t點的話,就可以進行一次成功的增廣了。如何實現?我們需要兩個輔助陣列,比dinic多。flow陣列,表示乙個點目前可以流的流量。las...

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

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