File tree 1 file changed +45
-0
lines changed
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 adj = Array ( n + 1 ) . fill ( 0 ) . map ( ( ) => [ ] ) ;
9
+ const inDegree = Array ( n + 1 ) . fill ( 0 ) ;
10
+ for ( const [ u , v ] of relations ) {
11
+ adj [ u ] . push ( v ) ;
12
+ inDegree [ v ] ++ ;
13
+ }
14
+ let q = [ ]
15
+ const finishTime = Array ( n + 1 ) . fill ( 0 ) ;
16
+ for ( let i = 1 ; i <= n ; i ++ ) {
17
+ if ( inDegree [ i ] === 0 ) {
18
+ q . push ( i ) ;
19
+ finishTime [ i ] = time [ i - 1 ] ;
20
+ }
21
+ }
22
+
23
+
24
+ while ( q . length ) {
25
+ const size = q . length ;
26
+ const tmp = [ ]
27
+ for ( let i = 0 ; i < size ; i ++ ) {
28
+ const e = q [ i ] ;
29
+ for ( const v of adj [ e ] ) {
30
+ inDegree [ v ] -- ;
31
+ finishTime [ v ] = Math . max ( finishTime [ v ] , finishTime [ e ] + time [ v - 1 ] ) ;
32
+ if ( inDegree [ v ] === 0 ) {
33
+ tmp . push ( v ) ;
34
+ }
35
+ }
36
+ }
37
+
38
+ q = tmp
39
+ }
40
+
41
+ return Math . max ( ...finishTime . slice ( 1 ) )
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