P4015 運輸問題

2022-07-20 04:36:13 字數 1691 閱讀 7116

w 公司有 m 個倉庫和 n 個零售商店。第 i 個倉庫有 \(a_i\) 個單位的貨物;第 j 個零售商店需要 \(b_j\) 個單位的貨物。

貨物供需平衡,即\(\sum\limits_^a_i=\sum\limits_^b_j\)

從第 i 個倉庫運送每單位貨物到第 j 個零售商店的費用為 \(c_\)​ 。

試設計乙個將倉庫中所有貨物運送到零售商店的運輸方案,使總運輸費用最少。

第 1 行有 2 個正整數 m 和 n,分別表示倉庫數和零售商店數。

接下來的一行中有 m 個正整數 \(a_i\),表示第 i 個倉庫有 \(a_i\) 個單位的貨物。

再接下來的一行中有 n 個正整數 \(b_j\),表示第 j 個零售商店需要 \(b_j\) 個單位的貨物。

接下來的 m 行,每行有 n 個整數,表示從第 i 個倉庫運送每單位貨物到第 j 個零售商店的費用 \(c_\) 。

兩行分別輸出最小運輸費用和最大運輸費用。

2 3

220 280

170 120 210

77 39 105

150 186 122

48500

69140

1≤n,m≤100

s向每個倉庫連容量為倉庫貨物量,邊權為0的邊(保證每個倉庫的流出量)

倉庫向商店連容量為倉庫貨物量,邊權為運輸費用的邊

每個商店向t連容量為所需量,邊權為0的邊(保證所需)

建正邊跑dinic,在取相反數重新來

#include#include#include#include#include#include#define _ 0

#define ll long long

inline ll in()

const ll inf=99999999999999999ll;

struct nodee[105050];

int cnt=1;

std::queueq;

ll dis[555],change[555];

int n,m,s,t;

int head[555],road[555];

ll vala[555],valb[555];

bool vis[555];

ll val[555][555];

inline void add(int from,int to,ll cap,ll dis)

inline bool spfa()

}} }

return change[t]!=inf;

}inline void mcmf(int flag)

} printf("%lld\n",cost*flag);

}int main()

mcmf(1);

cnt=1;

for(int i=s;i<=t;i++) head[i]=0;

for(int i=1;i<=m;i++) add(s,i,vala[i],0),add(i,s,0,0);

for(int i=1;i<=n;i++) add(i+m,t,valb[i],0),add(t,i+m,0,0);

for(int i=1;i<=m;i++)

for(int j=1;j<=n;j++)

mcmf(-1);

return 0;

}

洛谷 P4015 運輸問題 題解

題目鏈結 w ww 公司有 m mm 個倉庫和 n nn 個零售商店。第 i ii 個倉庫有 a ia i ai 個單位的貨物 第 j jj 個零售商店需要 b jb j bj 個單位的貨物。貨物供需平衡.從第 i ii 個倉庫運送每單位貨物到第 j jj 個零售商店的費用為 cij c ci j ...

洛谷P4015 運輸問題 費用流

ww 公司有 mm 個倉庫和 nn 個零售商店。第 ii 個倉庫有 a iai 個單位的貨物 第 jj 個零售商店需要 b jbj 個單位的貨物。貨物供需平衡,即 sum limits a i sum limits b ji 1 m ai j 1 n bj 從第 ii 個倉庫運送每單位貨物到第 jj...

luogu P4015 運輸問題 費用流

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