File tree 1 file changed +40
-0
lines changed
1 file changed +40
-0
lines changed Original file line number Diff line number Diff line change
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
+ };
You can’t perform that action at this time.
0 commit comments