最小費用最大流基礎模板 洛谷3381

2021-08-04 11:11:51 字數 1153 閱讀 4366

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

輸入格式:

第一行包含四個正整數n、m、s、t,分別表示點的個數、有向p3381 【模板】最小費用最大流邊的個數、源點序號、匯點序號。

接下來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

講一下具體的思路吧:

首先用前向星儲存所有的邊,並且將反向邊的花費設為相反數(反著流肯定減少),並且此時的流量應為0。

跑一遍spfa(因為有負權邊,不能用dij),記得加slf優化,優化的效果十分的明顯,將所經過的點和邊分別用兩個陣列記錄下來。

然後進入求允許通過的最大流,該邊減去最大流,則反向邊要加上最大流。

放上囉嗦的**~

#include#define inf 1e8

#define maxn 12000

#define maxm 120000

using namespace std;

struct edge

;struct edge edge[maxm];

int head[maxn],dis[maxn];

int n,m,s,t;

int book[maxn],pree[maxn],prep[maxn];

int ans_cost=0,ans_flow=0;

int cnt=0;

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

int spfa()

while(spfa())

maxflow();

cout最後感謝(orz) sa大神的幫助。

最小費用最大流 洛谷 1251

題意 這是一道最小費用 費用指單價 最大流的題目。1.從原點向每一天晚上連一條流量為當天所用餐巾x,費用為0的邊,表示每天晚上從起點獲得x條髒餐巾。2.從每一天早上向匯點連一條流量為當天所用餐巾x,費用為0的邊,每天白天,表示向匯點提供x條乾淨的餐巾,流滿時表示第i天的餐巾夠用 3.從每一天晚上向第...

最小費用最大流模板

const int n 1010 點 const int m 2 10010 邊 const int inf 1000000000 struct nodee m int next1 m point n dis n q n pre n ne ne為已新增的邊數,next,point為鄰接表,dis為花...

最小費用最大流模板

一 最小費用最大流的模型 在保證流量最大的前提下,所需的費用最小,這就是最小費用最大流問題 帶有費用的網路流圖 g v,e,c,w v 頂點 e 弧 c 弧的容量 w 單位流量費用。任意的弧對應非負的容量c i,j 和單位流量費用w i,j 滿足 流量f是g的最大流。在f是g的最大流的前提下,流的費...