Do problem D from the 2004 programming contest.
 submit a6 cs3110
See Chapter 26 on Maximum Flow especially 26.3 of CLRS 2/e.

This problem involves 'bipartite graphs'. For example, consider a set of students and a seperate set of jobs. Draw an edge between student[i] and job[j] if the student is qualified for that job. This is an example of a bipartite graph. If we want to place as many students as possible with jobs this can be viewed as a 'flow' problem - we imagine fluid flowing through the edges of the graph - and we get the maximum flow if as many students as possible have jobs (and each student has at most one job).