- Algorithm for finding [maximum flow
- Dinic is O(V^2E)
- [[History of Algorithms for Maximum Flow]]
- AOJ GRL_6_A Maximum Flow to verify implementation.
- My Python implementation (verified by AOJ)
- The edge is waiting in defaultdict(dict), so there is no need to have the index of the inverse side to get the inverse side.
- (Many C++ implementations have an inverse index on each side.)
- Do not search for previously explored edges.
- This is achieved by having “the first index of the edge not yet explored” in the
itertion_count
. - To use this, we need a mapping from index to edges, so we make it first in
max_flow
:edges_index
.
- This is achieved by having “the first index of the edge not yet explored” in the
- The edge is waiting in defaultdict(dict), so there is no need to have the index of the inverse side to get the inverse side.
- GitHub
Implementation of others - anthology  p.194
This page is auto-translated from /nishio/Dinic using DeepL. If you looks something interesting but the auto-translated English is not good enough to understand it, feel free to let me know at @nishio_en. I’m very happy to spread my thought to non-Japanese readers.