Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit dbae42b

Browse files
Merge pull request #3083 from benmak11/2050
Create 2050-parallel-courses-iii.java
2 parents 4a57286 + 70794e5 commit dbae42b

File tree

1 file changed

+32
-0
lines changed

1 file changed

+32
-0
lines changed

java/2050-parallel-courses-iii.java

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
public class Solution {
2+
public int minimumTime(int n, int[][] relations, int[] time) {
3+
Map<Integer, List<Integer>> adj = new HashMap<>();
4+
for (int[] relation : relations) {
5+
int src = relation[0];
6+
int dst = relation[1];
7+
adj.putIfAbsent(src, new ArrayList<>());
8+
adj.get(src).add(dst);
9+
}
10+
11+
Map<Integer, Integer> maxTime = new HashMap<>();
12+
13+
for (int i = 1; i <= n; i++) {
14+
dfs(i, time, adj, maxTime);
15+
}
16+
17+
return maxTime.values().stream().max(Integer::compareTo).get();
18+
}
19+
20+
private int dfs(int src, int[] time, Map<Integer, List<Integer>> adj, Map<Integer, Integer> maxTime) {
21+
if (maxTime.containsKey(src)) {
22+
return maxTime.get(src);
23+
}
24+
25+
int res = time[src - 1];
26+
for (int nei : adj.getOrDefault(src, new ArrayList<>())) {
27+
res = Math.max(res, time[src - 1] + dfs(nei, time, adj, maxTime));
28+
}
29+
maxTime.put(src, res);
30+
return res;
31+
}
32+
}

0 commit comments

Comments
 (0)