"You are given a DAG called G that is the prerequisite graph for a set of courses required for a degree. Each vertex corresponds to a course, and there is an edge from vertex C1 to vertex C2 if and only if C1 is a prerequisite for C2.
Give a high-level description of an algorithm that labels each vertex in G with the minimum number of semesters required to complete the course. (Assume that any course may be taken in any semester, but only if all the prerequisite courses have been taken in prior semesters.)
Your algorithm should run in linear time (i.e., O(E+V) for an adjacency list and O(V2) for an adjacency matrix.)