Skip to content

Commit db023e5

Browse files
authored
Update 2050-parallel-courses-iii.js
1 parent 742673a commit db023e5

File tree

1 file changed

+45
-0
lines changed

1 file changed

+45
-0
lines changed

2050-parallel-courses-iii.js

+45
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,48 @@
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+
146
/**
247
* @param {number} n
348
* @param {number[][]} relations

0 commit comments

Comments
 (0)