Hopcroft Carp Algorithm
Given a special directed graph, check if complete matching exist.
Create a bipartite graph Gn x n = (A, B, E). For each edge from node u to v, create an edge in G from node u in A to node v in B. Check of perfect matching exists in G.