A network-flow or flow network is a directed graph with a capacity for each edge that can propagate a flow from a source to a sink. It is one of the most powerful problem solving tools in computer science and it is used to solve many network problems, operation research problems, etc.