Negative Edges Appear

Min cost max flow by successive shortest paths. Why can you not simply run Dijkstra each round?

A

Pushing flow changes the residual capacities, so a shortest path from one round is invalid in the next even when no cost changes. The potentials must be recomputed from scratch each round, which turns O(Fmn)O(Fmn) into O(Fmnlog⁡n)O(Fmn\log n).

B

Pushing flow creates a reverse edge of cost −c-c, so the residual graph has negative edges even when the input does not. Johnson potentials reweight them non-negative, letting Dijkstra run after one Bellman-Ford, which turns O(Fmn)O(Fmn) into O(mn+Fmlog⁡n)O(mn + Fm\log n).

C

Pushing flow creates a reverse edge of cost −c-c, so the residual graph develops negative cycles even when the input does not. No potential function removes a negative cycle, so Bellman-Ford must run every round, which leaves the cost at O(Fmn)O(Fmn).

D

Pushing flow creates a reverse edge of cost −c-c, so the residual graph has negative edges even when the input does not. Dijkstra is correct on negative edges as long as no negative cycle exists, so no reweighting is needed and the cost is O(Fmlog⁡n)O(Fm\log n).