洛谷 P4015 運輸問題 題解

2021-10-23 22:51:26 字數 1676 閱讀 5707

題目鏈結

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​​​ 。

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

費用流模板題。

建源點和匯點連邊。

源點向每個倉庫i

ii連邊,流量為倉庫i

ii的貨物數量,費用為000.

每個商店j

jj向匯點連邊,流量為商店j

jj的需求量,費用為000.

以上兩種邊的目的都是限制流量,同時因為貨物供需平衡,最後一定能全部滿足。

最後每個倉庫i

ii向商店j

jj連邊,流量為inf

infin

f,費用為cij

c_ci

j​. 如果這種邊通過流量,那麼就說明倉庫i

ii運送了貨物到商店jjj.

最後跑費用流就好了。

#include

#include

#include

#include

using

namespace std;

const

int maxn=

105;

const

int maxm=

1000005

;const

int inf=

0x7f7f7f7f

;const

long

long linf=

1e18

;struct node

edge[maxm<<1]

;bool vis[maxn<<2]

;int head[maxn<<2]

,k,s,t;

long

long dist[maxn<<2]

,tot_cost;

void

add(

int u,

int v,

int w,

long

long c)

bool

spfa()

}}}return dist[s]

!=linf;

}int

dfs(

int x,

int f)

}return flow;

}void

zkw()}

if(tot_cost>=0)

printf

("%lld\n"

,tot_cost)

;else

printf

("%lld\n"

,-tot_cost);}

int n,m,a[maxn]

,b[maxn]

,cost[maxn]

[maxn]

;int

main()

洛谷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...

P4015 運輸問題

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

洛谷 2680 運輸計畫 題解

部落格觀賞效果更佳 n nn個點的邊帶權樹,給m mm條關鍵的鏈。把樹上一條邊的權值變為0,使得m mm條鏈的和中,最大值最小。n,m 1 e5 n,m 1e5 n,m 1 e5。二分最大值k kk。現在考慮如何檢驗乙個kkk。找到所有鏈和 k k k的鏈,設這裡面最長的鏈長度為s ss,有c cc...