Skip to content

Commit b03b969

Browse files
committed
Adding C++ Implementation
1 parent 6054382 commit b03b969

File tree

1 file changed

+37
-0
lines changed

1 file changed

+37
-0
lines changed
+37
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
#include <bits/stdc++.h>
2+
3+
using namespace std;
4+
5+
class Solution {
6+
public:
7+
bool isCycle(int course, vector<vector<int>>& adj, vector<int>& visited) {
8+
if(visited[course] == 2) return true ;
9+
if(visited[course] == 1) return false ;
10+
visited[course] = 2 ;
11+
for(auto connectedCourse : adj[course]) {
12+
if(isCycle(connectedCourse, adj, visited)) {
13+
return true ;
14+
}
15+
}
16+
visited[course] = 1 ;
17+
return false ;
18+
}
19+
20+
bool canFinish(int numCourses, vector<vector<int>>& prerequisites) {
21+
vector<vector<int>> adj(numCourses) ;
22+
for(auto courses : prerequisites) {
23+
auto course1 = courses[0] ;
24+
auto course2 = courses[1] ;
25+
adj[course2].push_back(course1) ;
26+
}
27+
vector<int> visited(numCourses, 0) ;
28+
for(int course = 0 ; course < numCourses ; course++) {
29+
if(!visited[course]) {
30+
if(isCycle(course, adj, visited)) {
31+
return false;
32+
}
33+
}
34+
}
35+
return true ;
36+
}
37+
};

0 commit comments

Comments
 (0)