diff --git a/207. Course Schedule.cpp b/207. Course Schedule.cpp new file mode 100644 index 0000000..4a951e3 --- /dev/null +++ b/207. Course Schedule.cpp @@ -0,0 +1,29 @@ +class Solution { +public: + bool canFinish(int numCourses, vector>& prerequisites) { + vector> graph(numCourses); + vector inDegree(numCourses, 0); + for (auto &p : prerequisites) { + int a = p[0], b = p[1]; + graph[b].push_back(a); + inDegree[a]++; + } + queue q; + for (int i = 0; i < numCourses; i++) { + if (inDegree[i] == 0) q.push(i); + } + int processed = 0; + while (!q.empty()) { + int u = q.front(); + q.pop(); + processed++; + for (int v : graph[u]) { + inDegree[v]--; + if (inDegree[v] == 0) { + q.push(v); + } + } + } + return processed == numCourses; + } +}; \ No newline at end of file