Skip to content

Commit 183167b

Browse files
authored
Create Parallel Courses III.java
1 parent 532b766 commit 183167b

File tree

1 file changed

+35
-0
lines changed

1 file changed

+35
-0
lines changed

Hard/Parallel Courses III.java

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
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+
}

0 commit comments

Comments
 (0)