File tree 1 file changed +35
-0
lines changed
1 file changed +35
-0
lines changed Original file line number Diff line number Diff line change
1
+ function checkIfPrerequisite ( numCourses , prerequisites , queries ) {
2
+ let map = new Map ( ) ;
3
+
4
+ for ( let i = 0 ; i < prerequisites . length ; i ++ ) {
5
+ let course = prerequisites [ i ] [ 0 ] ;
6
+ let prereq = prerequisites [ i ] [ 1 ] ;
7
+ if ( ! map . has ( course ) ) {
8
+ map . set ( course , new Set ( ) ) ;
9
+ }
10
+ map . get ( course ) . add ( prereq ) ;
11
+ }
12
+
13
+ let reachable = Array . from ( { length : numCourses } , ( ) => Array ( numCourses ) . fill ( false ) ) ;
14
+ for ( let [ course , prereqs ] of map ) {
15
+ for ( let prereq of prereqs ) {
16
+ reachable [ course ] [ prereq ] = true ;
17
+ }
18
+ }
19
+ for ( let k = 0 ; k < numCourses ; k ++ ) {
20
+ for ( let i = 0 ; i < numCourses ; i ++ ) {
21
+ for ( let j = 0 ; j < numCourses ; j ++ ) {
22
+ reachable [ i ] [ j ] = reachable [ i ] [ j ] || ( reachable [ i ] [ k ] && reachable [ k ] [ j ] ) ;
23
+ }
24
+ }
25
+ }
26
+
27
+ let res = [ ] ;
28
+ for ( let i = 0 ; i < queries . length ; i ++ ) {
29
+ let course = queries [ i ] [ 0 ] ;
30
+ let prereq = queries [ i ] [ 1 ] ;
31
+ res . push ( reachable [ course ] [ prereq ] ) ;
32
+ }
33
+
34
+ return res ;
35
+ }
You can’t perform that action at this time.
0 commit comments