bipartite graph matching, very good