In the last lecture, we looked at the problem of finding the maximum flow in a graph, and how it can be efficiently solved using the Ford-Fulkerson algorithm. We also proved the Min Cut-Max Flow Theorem which states that the size of the maximum flow is exactly equal to the size of the minimum cut in the graph. In this lecture, we will see how various different problems can be solved by reducing the problem to an instance of the network flow problem. 5.1 Bipartite Matching A Bipartite Graph G = (V, E) is a graph in which the vertex set V can be divided into two disjoint subsets X and Y such that every edge e ∈ E has one end point in X and the other end point in Y. A matching M is a subset of edges such that each node in V appears in at most one edge in M.