
最小费用流(Minimum Cost b-flow)
问题描述
给定一个含 n 个顶点、m 条边的有向图,每条边 e 有:
- 流量下界 le、上界 ue,
- 单位流量费用 ce。
每个顶点 v 有供需量 bv:若 bv>0,表示供应 bv 单位;若 bv<0,表示需求 −bv 单位。
求满足以下条件的最小费用可行流 f=(fe)e=0m−1 与对偶势 p=(pv)v=0n−1:
- 容量约束:le≤fe≤ue
- 流量守恒:对每个顶点 v,$$\sum_{e \in \delta^+(v)} f_e - \sum_{e \in \delta^-(v)} f_e = b_v$$
- 互补松弛条件(最优性条件):
- 若 fe>le,则 ce+pse−pte≤0
- 若 fe<ue,则 ce+pse−pte≥0
目标是最小化总费用:
z=e=0∑m−1cefe
若不存在可行流,输出 infeasible;否则输出:
- z(最小费用)
- 势 p0,p1,…,pn−1
- 流量 f0,f1,…,fm−1
约束条件
- 0≤n≤100
- 0≤m≤1000
- 0≤se,te<n
- ∣bv∣,∣le∣,∣ue∣,∣ce∣≤109
- le≤ue
- 所有值为整数
- 输入图可含自环
- 结果可能超过 264
输入格式
n m
b0
b1
:
bn−1
s0 t0 l0 u0 c0
s1 t1 l1 u1 c1
:
sm−1 tm−1 lm−1 um−1 cm−1
输出格式
- 若不可行:
infeasible
- 否则:
z
p0 p1 ⋯ pn−1
f0 f1 ⋯ fm−1
3 5
1
-1
0
0 1 1 2 1
1 2 0 2 2
2 0 -3 5 1
0 2 0 3 -2
2 1 0 1 0
-2
0
-1
-1
1
0
3
3
0
2 1
-1
1
0 0 -1 1 0
infeasible
2 1
1
0
0 1 -10 10 0
infeasible