You learned bipartite matching from the ground up. You know what matchings are, how to find maximum matchings with Kuhn's algorithm in , and how this connects to max flow. You have seen König's theorem linking matchings to vertex covers, Hall's theorem for perfect matchings, and applications to job assignment and scheduling.
You solved School Dance and know when to use greedy versus matching. You are ready for problems involving pairings and assignments.