luogu P3381 模板 最小費用最大流

2022-04-30 02:12:06 字數 2040 閱讀 8584

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

輸入格式:

第一行包含四個正整數n、m、s、t,分別表示點的個數、有向邊的個數、源點序號、匯點序號。

接下來m行每行包含四個正整數ui、vi、wi、fi,表示第i條有向邊從ui出發,到達vi,邊權為wi(即該邊最大流量為wi),單位流量的費用為fi。

輸出格式:

一行,包含兩個整數,依次為最大流量和在最大流量情況下的最小費用。

輸入樣例#1:

4 5 4 3

4 2 30 2

4 3 20 3

2 3 20 1

2 1 30 9

1 3 40 5

輸出樣例#1:

50 280
時空限制:1000ms,128m

(byx:最後兩個點改成了1200ms)

資料規模:

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

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

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

樣例說明:

如圖,最優方案如下:

第一條流為4-->3,流量為20,費用為3*20=60。

第二條流為4-->2-->3,流量為20,費用為(2+1)*20=60。

第三條流為4-->2-->1-->3,流量為10,費用為(2+9+5)*10=160。

故最大流量為50,在此狀況下最小費用為60+60+160=280。

故輸出50 280。

/*

最小費用最大流:

對於乙個網路,它的最大流是唯一的,最大流一定是乙個定值(即使是有多個一樣的最大值),而

在最大流一定的情況下費用卻不一定是一定的,最小費用最大流就是在最大流一定的情況下求解最

小費用。所以為了滿足最小費用我們只需要每次找小費用的增廣路即可,直到流量為最大值。所以

最只需在求增廣路時先考慮費用最小的增廣路。將弧的費用看做是路徑長度,即可轉化為求最短路

的問題了。只需要所走的最短路滿足兩個條件即可:1可增廣cap> flow,2路徑變短d[v]>d[u]+cost< u,v> */

#include#include#include#include#include#includeusing namespace std;

const int n=1e4+10;//dian

const int nn=1e5+10;//bian

const int inf=9999999;

int head[n],now=1,w[n],pre[n];

int n,m,s,t,nflow,flow,fee;

int _u,_v,_river,_mon;

bool vis[n];

struct nodee[nn];

queueq;

inline int read()

inline void add(int _u,int _v,int _river,int _mon)

int ap(int k,int v)

e[pre[k]].river-=ret;

e[pre[k]^1].river+=ret;

return ret;

}inline void mcmf()

} if(w[t]==inf)

break;

nflow=ap(t,inf);

flow+=nflow;

fee+=nflow*w[t]; }}

int main()

mcmf();

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

return 0;}/*

4 5 4 3

4 2 30 2

4 3 20 3

2 3 20 1

2 1 30 9

1 3 40 5

*/

luoguP3381 模板 最小費用最大流

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

luoguP3381 模板 最小費用最大流

如題,給出乙個網路圖,以及其源點和匯點,每條邊已知其最大流量和單位流量費用,求出其網路最大流和在最大流情況下的最小費用。include include include include define maxn 5005 define maxm 50005 2 define inf 1000000007...

Luogu P3381 模板 最小費用最大流

傳送門 最小費用最大流,就是在求最大流的前提下,使選出的路徑費用最小。每條邊除了容量w外,還要記錄乙個單位流量費用co。其實就是 dinic 的 bfs 和 spfa 同時進行,每次更新增廣路時,保證選擇的一定是費用最小的一條路徑。paopo 說這個用不了當前弧優化,所以我就沒用qwq 對於每個點,...