#P9171. 最小费用流(Minimum Cost b-flow)

最小费用流(Minimum Cost b-flow)

最小费用流(Minimum Cost b-flow)

问题描述

给定一个含 n n 个顶点、m m 条边的有向图,每条边 e e 有:

  • 流量下界 le l_e 、上界 ue u_e
  • 单位流量费用 ce c_e

每个顶点 v v 有供需量 bv b_v :若 bv>0 b_v > 0 ,表示供应 bv b_v 单位;若 bv<0 b_v < 0 ,表示需求 bv -b_v 单位。

求满足以下条件的最小费用可行流 f=(fe)e=0m1 \mathbf{f} = (f_e)_{e=0}^{m-1} 与对偶势 p=(pv)v=0n1 \mathbf{p} = (p_v)_{v=0}^{n-1}

  1. 容量约束lefeue l_e \le f_e \le u_e
  2. 流量守恒:对每个顶点 v v ,$$\sum_{e \in \delta^+(v)} f_e - \sum_{e \in \delta^-(v)} f_e = b_v$$
  3. 互补松弛条件(最优性条件):
    • fe>le f_e > l_e ,则 ce+psepte0 c_e + p_{s_e} - p_{t_e} \le 0
    • fe<ue f_e < u_e ,则 ce+psepte0 c_e + p_{s_e} - p_{t_e} \ge 0

目标是最小化总费用:

z=e=0m1cefez = \sum_{e=0}^{m-1} c_e f_e

若不存在可行流,输出 infeasible;否则输出:

  • z z (最小费用)
  • p0,p1,,pn1 p_0, p_1, \dots, p_{n-1}
  • 流量 f0,f1,,fm1 f_0, f_1, \dots, f_{m-1}

约束条件

  • 0n100 0 \le n \le 100
  • 0m1000 0 \le m \le 1000
  • 0se,te<n 0 \le s_e, t_e < n
  • bv,le,ue,ce109 |b_v|, |l_e|, |u_e|, |c_e| \le 10^9
  • leue l_e \le u_e
  • 所有值为整数
  • 输入图可含自环
  • 结果可能超过 264 2^{64}

输入格式

n mn\ m
b0b_0
b1b_1
:
bn1b_{n-1}
s0 t0 l0 u0 c0s_0\ t_0\ l_0\ u_0\ c_0
s1 t1 l1 u1 c1s_1\ t_1\ l_1\ u_1\ c_1
:
sm1 tm1 lm1 um1 cm1s_{m-1}\ t_{m-1}\ l_{m-1}\ u_{m-1}\ c_{m-1}

输出格式

  • 若不可行:

    infeasible

  • 否则:

    zz
    p0 p1  pn1p_0\ p_1\ \cdots\ p_{n-1}
    f0 f1  fm1f_0\ f_1\ \cdots\ f_{m-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