9.1. Flow Network
This section describes how to implement a flow network.
A flow network is a directed graph that has the following properties:
Let us define the MaxFlow class that keeps track of the amount of flows in every edge used to find the maximum flow:
L2: consists of (edge, flow) as the key-value pair.
L3: stores the total amount of flows to the target vertices.
L13-14: initializes all flows to 0.
Let us define getter methods:
L5: returns the remaining residual that can be used to push more flows.
L6: the edge weight represents the total capacity.
Finally, let us define setter methods:
L1: takes the path from a source and a target.
L2: updates the flow of every edge in the path with the specific flow.