Skip to content

Commit 1d62ca4

Browse files
committed
Course Schedule Solution
1 parent 591c5e1 commit 1d62ca4

File tree

1 file changed

+80
-0
lines changed

1 file changed

+80
-0
lines changed

course-schedule/PDKhan.cpp

Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
//DFS
2+
class Solution {
3+
public:
4+
bool dfs(int curr, vector<vector<int>>& graph, vector<int>& visited){
5+
if(visited[curr] == 1)
6+
return false;
7+
8+
if(visited[curr] == 2)
9+
return true;
10+
11+
visited[curr] = 1;
12+
13+
for(int i = 0; i < graph[curr].size(); i++){
14+
if(dfs(graph[curr][i], graph, visited) == false)
15+
return false;
16+
}
17+
18+
visited[curr] = 2;
19+
20+
return true;
21+
}
22+
23+
bool canFinish(int numCourses, vector<vector<int>>& prerequisites) {
24+
vector<vector<int>> graph (numCourses);
25+
vector<int> visited (numCourses, 0);
26+
27+
for(int i = 0; i < prerequisites.size(); i++){
28+
int course = prerequisites[i][0];
29+
int pre = prerequisites[i][1];
30+
31+
graph[pre].push_back(course);
32+
}
33+
34+
for(int i = 0; i < numCourses; i++){
35+
if(dfs(i, graph, visited) == false)
36+
return false;
37+
}
38+
39+
return true;
40+
}
41+
};
42+
43+
// BFS
44+
class Solution {
45+
public:
46+
bool canFinish(int numCourses, vector<vector<int>>& prerequisites) {
47+
vector<vector<int>> graph (numCourses);
48+
vector<int> inDegree (numCourses, 0);
49+
50+
for(int i = 0; i < prerequisites.size(); i++){
51+
int course = prerequisites[i][0];
52+
int pre = prerequisites[i][1];
53+
54+
graph[pre].push_back(course);
55+
inDegree[course]++;
56+
}
57+
58+
queue<int> q;
59+
60+
for(int i = 0; i < numCourses; i++){
61+
if(inDegree[i] == 0)
62+
q.push(i);
63+
}
64+
65+
int count = 0;
66+
67+
while(!q.empty()){
68+
int curr = q.front();
69+
q.pop();
70+
count++;
71+
72+
for(int i = 0; i < graph[curr].size(); i++){
73+
if(--inDegree[graph[curr][i]] == 0)
74+
q.push(graph[curr][i]);
75+
}
76+
}
77+
78+
return count == numCourses;;
79+
}
80+
};

0 commit comments

Comments
 (0)