File tree 1 file changed +47
-0
lines changed
1 file changed +47
-0
lines changed Original file line number Diff line number Diff line change
1
+ /**
2
+ * @param {number } n
3
+ * @param {number[][] } relations
4
+ * @return {number }
5
+ */
6
+ const minimumSemesters = function ( n , relations ) {
7
+ const inDegree = Array ( n + 1 ) . fill ( 0 )
8
+ const graph = { }
9
+ for ( const [ prev , nxt ] of relations ) {
10
+ if ( graph [ prev ] == null ) graph [ prev ] = [ ]
11
+ graph [ prev ] . push ( nxt )
12
+
13
+ inDegree [ nxt ] ++
14
+ }
15
+
16
+ let q = [ ]
17
+ for ( let i = 1 ; i <= n ; i ++ ) {
18
+ if ( inDegree [ i ] === 0 ) q . push ( i )
19
+ }
20
+
21
+ // console.log(inDegree)
22
+ let res = 0 , cnt = 0
23
+ while ( q . length ) {
24
+ const size = q . length , nxt = [ ]
25
+
26
+ for ( let i = 0 ; i < size ; i ++ ) {
27
+ const cur = q [ i ]
28
+ for ( const e of ( graph [ cur ] || [ ] ) ) {
29
+ inDegree [ e ] --
30
+ if ( inDegree [ e ] === 0 ) {
31
+ nxt . push ( e )
32
+ }
33
+ }
34
+ }
35
+ res ++
36
+ cnt += size
37
+ q = nxt
38
+ // console.log(nxt)
39
+ }
40
+ // console.log(cnt, res)
41
+
42
+ return cnt === n ? res : - 1
43
+ }
44
+
45
+
46
+ // another
47
+
1
48
/**
2
49
* @param {number } N
3
50
* @param {number[][] } relations
You can’t perform that action at this time.
0 commit comments