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
+ class Solution {
2
+ public int minimumTime (int n , int [][] relations , int [] time ) {
3
+ Map <Integer , List <Integer >> map = new HashMap <>();
4
+ int [] indegree = new int [n + 1 ];
5
+ for (int [] relation : relations ) {
6
+ int course = relation [0 ];
7
+ int prereq = relation [1 ];
8
+ indegree [course ]++;
9
+ map .computeIfAbsent (prereq , k -> new ArrayList <>()).add (course );
10
+ }
11
+ Queue <Integer > queue = new LinkedList <>();
12
+ int [] maxTime = new int [n + 1 ];
13
+ for (int i = 1 ; i <= n ; i ++) {
14
+ if (indegree [i ] == 0 ) {
15
+ queue .add (i );
16
+ maxTime [i ] = time [i - 1 ];
17
+ }
18
+ }
19
+ while (!queue .isEmpty ()) {
20
+ int removed = queue .remove ();
21
+ for (Integer dependent : map .getOrDefault (removed , new ArrayList <>())) {
22
+ maxTime [dependent ] = Math .max (maxTime [dependent ], maxTime [removed ] + time [dependent - 1 ]);
23
+ indegree [dependent ]--;
24
+ if (indegree [dependent ] == 0 ) {
25
+ queue .add (dependent );
26
+ }
27
+ }
28
+ }
29
+ int result = 0 ;
30
+ for (int i = 1 ; i <= n ; i ++) {
31
+ result = Math .max (result , maxTime [i ]);
32
+ }
33
+ return result ;
34
+ }
35
+ }
You can’t perform that action at this time.
0 commit comments