public static void main(String args[]){
        List<Integer> app0 = new ArrayList<Integer>();
        app0.add(10);
        app0.add(11);
        app0.add(13);
        
        List<Integer> app1 = new ArrayList<Integer>();
        app1.add(10);
        
        List<Integer> app2 = new ArrayList<Integer>();
        app2.add(12);

        List<Integer> app3 = new ArrayList<Integer>();
        app3.add(12);
        app3.add(10);
        app3.add(11);
        
        Map<Integer,List<Integer>> jobApplications = new HashMap<Integer,List<Integer>>();
        jobApplications.put(0, app0);
        jobApplications.put(1, app1);
        jobApplications.put(2, app2);
        jobApplications.put(3, app3);
        MaximumBiparteMatching mbm = new MaximumBiparteMatching();
        List<Integer> allJobs = new ArrayList<Integer>();
        allJobs.add(10);
        allJobs.add(11);
        allJobs.add(12);
        allJobs.add(13);
        System.out.print(mbm.findMaxMatching(jobApplications, allJobs));
        
    }
http://www.geeksforgeeks.org/maximum-bipartite-matching/
src/com/interview/graph/MaximumBiparteMatching.java