Came across this question while preparing for finals exams.
Suppose you’re looking at a flow network G with source s and sink t. We can classify the nodes into 3 categories.
We say a node v is upstream if, for all minimum s-t cuts (A,B), v is in A.
We say a node v is downstream if, for all minimum s-t cuts (A,B), v is in B.
We say a node v is central if it is neither upstream nor downstream; we can find a mincut where v is upstream, and another mincut where v is downstream.
Task: Give an algorithm that takes a flow network G and classifies each of its nodes as being upstream, downstream, or central. The running time of your algorithm should be within a constant factor of the time required to compute a single maximum flow.
It is quite difficult to classify a node as upstream or downstream, so my approach is to find all central nodes. I can do this for a single node u, I first find the max flow m on G, which corresponds to the mincut. Suppose u is in the s-component of this mincut; I then add an edge of negligible capacity from u to sink t, and find the mincut again. If the mincut remains the same, then there must be some other mincut where u is downstream, and so u is a central node. Conversely, if mincut increases, then I know that u is upstream. (To add an edge of neglibigle capacity, I scale everything up by some factor, such as |E|, and then add an edge of cap 1.)
The main difficultly using this method is I can't see a way to compute this for all nodes at once, hence I can't get the solution in a constant number of mincut runs.
The other possibility is given the max flow on the network, there might be a way to compute the minimal mincut and proceed from there.
Am I on the right track? Any hints are much appreciated!