網路流24題 運輸問題

2021-09-12 14:24:15 字數 1931 閱讀 5294

題目傳送門

最小費用最大流,最大費用最大流

源點與倉庫相連,流量為a[i],費用0

匯點與商店相連,流量為b[i],費用為0

倉庫與商店相連,流量無限,費用為c[i][j]

最大費用最大流轉換成最小費用最大流,方法就是建圖的時候把費用變成相反數跑最小費用最大流,最後答案取相反數即可

#include

#include

#include

#include

#include

#define inf 1000000007

using

namespace std;

int st,lt;

int head[

20001

],to[

20001

],nxt[

20001

],tot=

1,flow[

20001

],value[

20001];

int dis[

20001

],vis[

20001

],from[

20001

],pre[

20001];

int ansflow,anscost;

queue<

int>q;

int m,n;

void

add(

int x,

int y,

int f,

int v)

int ck[

101]

,sd[

101]

;int jg[

101]

[101];

bool

spfa

(int s)}}

}if(dis[lt]

>=inf)

return0;

else

return1;

}void

mcf(

) ansflow+

=x;for

(int i=from[lt]

;i;i=from[pre[i]])

}int

main()

for(

int i=

1;i<=n;i++

)for

(int i=

1;i<=m;i++

)for

(int j=

1;j<=n;j++

)while

(spfa

(st)

)printf

("%d"

,anscost)

;memset

(head,0,

sizeof

(head));

memset

(nxt,0,

sizeof

(nxt));

memset

(to,0,

sizeof

(to));

memset

(from,0,

sizeof

(from));

anscost=

0,ansflow=0;

for(

int i=

1;i<=m;i++

)for

(int i=

1;i<=n;i++

)for

(int i=

1;i<=m;i++

)for

(int j=

1;j<=n;j++

)while

(spfa

(st)

)printf

("\n%d"

,-anscost)

;return0;

}

網路流24題 運輸問題

題意 有m個倉庫,n個零售商店,兩兩之間有運送貨物的單位費用 對於給定的倉庫的儲存量和商店的需求量,計算最優運輸方案和最差運輸方案 題解 建圖 從源點s到每個倉庫連容量為貨物數的邊 從每個商店到匯點t連容量為貨物數的邊 倉庫與商店間兩兩連容量無限,費用為單位費用的邊 分別求出最小費用最大流和最大費用...

網路流24題 運輸問題

題目描述 description w 公司有m個倉庫和n 個零售商店。第i 個倉庫有ai 個單位的貨物 第j 個零售商店需要bj個單位的貨物。貨物供需平衡,即 sum si sum bj 從第i 個倉庫運送每單位貨物到第j 個零售商店的費用為cij 試設計乙個將倉庫中所有貨物運送到零售商店的運輸方案...

網路流24題 運輸問題(費用流)

cogs 大水題。源點向倉庫連,容量為貨物量,費用為0 倉庫向商店連,容量inf,費用題目給出來了 商店向匯點連,容量為需求量,費用為0 簡直裸的費用流 include include include include include include include include include i...