Imagine you're planning your college course schedule! 🎓 You have numCourses courses numbered from 0 to numCourses - 1, and some courses have prerequisites that must be completed first.
You're given an array prerequisites where prerequisites[i] = [ai, bi] means you must complete course ai before taking course bi. For example, [0, 1] means course 0 is required before course 1.
Here's the tricky part: Prerequisites can be indirect! If course A is required for course B, and course B is required for course C, then course A is also required for course C (transitivity).
You need to answer multiple queries where each query [u, v] asks: "Is course u a prerequisite of course v?"
Goal: Return a boolean array where each element answers the corresponding query efficiently.
Input & Output
Constraints
- 2 ≤ numCourses ≤ 100
- 0 ≤ prerequisites.length ≤ (numCourses * (numCourses - 1) / 2)
- prerequisites[i].length == 2
- 0 ≤ ai, bi ≤ numCourses - 1
- ai ≠ bi
- All the pairs [ai, bi] are unique
- The prerequisites graph has no cycles
- 1 ≤ queries.length ≤ 104
- 0 ≤ uj, vj ≤ numCourses - 1
- uj ≠ vj