Skip to content

Commit 4efb751

Browse files
authored
Create Day29.cpp
1 parent c85b55b commit 4efb751

File tree

1 file changed

+40
-0
lines changed

1 file changed

+40
-0
lines changed

Day29.cpp

+40
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
/*
2+
Author: Aryan Yadav
3+
Course Schedule
4+
Algorithm: Graphs
5+
Difficulty: Medium
6+
*/
7+
8+
class Solution {
9+
public:
10+
bool canFinish(int numCourses, vector<vector<int>>& prerequisites) {
11+
queue<int> zeroInDegree;
12+
unordered_map<int, unordered_set<int>> inDegree;
13+
unordered_map<int, unordered_set<int>> outDegree;
14+
for (int i = 0; i < prerequisites.size(); ++i) {
15+
inDegree[prerequisites[i][0]].insert(prerequisites[i][1]);
16+
outDegree[prerequisites[i][1]].insert(prerequisites[i][0]);
17+
}
18+
for(int i = 0; i < numCourses; ++i) {
19+
if(inDegree.find(i) == inDegree.end()) {
20+
zeroInDegree.push(i);
21+
}
22+
}
23+
while(!zeroInDegree.empty()) {
24+
int prerequisite = zeroInDegree.front();
25+
zeroInDegree.pop();
26+
for (const auto & course: outDegree[prerequisite]) {
27+
inDegree[course].erase(prerequisite);
28+
if (inDegree[course].empty()) {
29+
zeroInDegree.push(course);
30+
}
31+
}
32+
outDegree.erase(prerequisite);
33+
}
34+
if (!outDegree.empty()) {
35+
return false;
36+
}
37+
38+
return true;
39+
}
40+
};

0 commit comments

Comments
 (0)