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