Proof
Denote for an edge as the remaining capacity() and flow pushed(). . When we do any flow network algorithm, at the end, we’ll be stuck at some cut, where in the residual graph, there’s no more way to reach from .
Take the figure above as an example, for outgoing edges, should equal the capacity, should be , because if is not zero, then in we can push more flow through this cur.
And for edges coming in , should be , and should equal the original capacity, since if is not , then there would be an edge sticking out in the residual graph , and we can push more flow through this cut.
The key questions is how do we know that at this point, the flow we pushed is the maximum flow ?
The value of a flow for a cut is defined as , we can easily observed that the maximum flow happens when , and , and , we know is the capacity of that cut, so the maximum flow will equals to the minimum capacity. Hence, the max-flow min-cut theorem, and the correctness of those algorithm that pushes flow through the network.