最小费用流问题,花了两个中午解决,顺便写成了函数。
直接将每个点i拆分成<i,a>,<i,b>,且之间连一条容量为无穷大,费用为0的边。我们将源点与<i,a>间连一条容量为a[i],费用为0的边。将<i,b>与<j,a>间连一条容量为无穷大,费用为1的边(j为i旁边两点)。将<i,b>与汇点连一条容量为平均值,费用为0的边。最后的费用流即为答案。
问题描述:
G 公司有n 个沿铁路运输线环形排列的仓库,每个仓库存储的货物数量不等。如何用最少搬运量可以使n 个仓库的库存数量相同。搬运货物时,只能在相邻的仓库之间搬运。
编程任务:
对于给定的n 个环形排列的仓库的库存量,编程计算使n 个仓库的库存数量相同的最少搬运量。
数据输入:
由文件input.txt 提供输入数据。文件的第1 行中有1 个正整数n (n<=100),表示有n 个仓库。第2 行中有n 个正整数,表示n 个仓库的库存量。
结果输出:
程序运行结束时,将计算出的最少搬运量输出到文件output.txt 中。
样例:
input.txt
5
17 9 14 16 4
output.txt
11
我的代码
1 | /* |