public int findMaxMatching(Map<Integer,List<Integer>> jobApplications, List<Integer> allJobs){
        
        Map<Integer,Integer> match = new HashMap<Integer,Integer>();
        int maxMatch = 0;
        for(Integer candidate : jobApplications.keySet()){
            Set<Integer> jobsSeen = new HashSet<Integer>();
            maxMatch += matchJobs(candidate, jobApplications, match, jobsSeen) ==true ? 1 : 0;
        }
        return maxMatch;
    }
http://www.geeksforgeeks.org/maximum-bipartite-matching/
src/com/interview/graph/MaximumBiparteMatching.java