Dinics
Dinic's algorithm, named after Yefim Dinic, is a widely used method for computing the maximum flow in a flow network. It operates by repeatedly constructing a level graph of the residual network with a breadth-first search and then finding a blocking flow within that level graph using depth-first search. This two-phase approach—level graph construction followed by blocking flow augmentation—continues until no s-t path remains in the residual graph, at which point the current flow is maximum.
The level graph assigns to each vertex a distance from the source along edges with positive residual
Dinic's algorithm yields a maximum s-t flow, and from the residual graph, the minimum cut can be
Complexity-wise, the algorithm runs in general graphs in O(E V^2) time, with improvements for special cases (for
Applications span from network design and scheduling to bipartite matching and various reductions to maximum flow