Parallel Courses - Medium Data Structures and Algorithms Problem | Thita.ai
Parallel Courses
Difficulty: Medium
Category: DSA
Topics: Graph, Topological Sort
Asked at: Google, Uber
You are given an integer `n` representing the number of courses labeled from `1` to `n`. You are also given a 2D integer array `relations` where `relations[i] = [prevCourse_i, nextCourse_i]` denotes that course `prevCourse_i` must be taken before course `nextCourse_i`.
In one semester, you can take **any number of courses** as long as you have taken all the prerequisites for the courses you are taking in previous semesters.
Return the **minimum number of semesters** needed to take all courses. If there is no way to take all the courses, return `-1`.
**Example 1:**
```
Input: n = 3, relations = [[1,3],[2,3]]
Output: 2
Explanation: The figure above represents the given graph.
In the first semester, you can take courses 1 and 2.
In the second semester, you can take course 3.
```
**Example 2:**
```
Input: n = 3, relations = [[1,2],[2,3],[3,1]]
Output: -1
Explanation: No course can be studied because they are prerequisites of each other.
```
**Constraints:**
- `1 <= n <= 5000`
- `1 <= relations.length <= 5000`
- `relations[i].length == 2`
- `1 <= prevCourse_i, nextCourse_i <= n`
- `prevCourse_i != nextCourse_i`
- All the pairs `[prevCourse_i, nextCourse_i]` are **unique**.