Skip to content

Commit 2757785

Browse files
authored
Update 2050-parallel-courses-iii.js
1 parent 7d37a06 commit 2757785

File tree

1 file changed

+45
-0
lines changed

1 file changed

+45
-0
lines changed

2050-parallel-courses-iii.js

Lines changed: 45 additions & 0 deletions
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 inDegree = Array(n + 1).fill(0)
9+
const graph = {}, dist = Array(n + 1).fill(0)
10+
11+
for(const [pre, nxt] of relations) {
12+
if(graph[pre] == null) graph[pre] = []
13+
graph[pre].push(nxt)
14+
inDegree[nxt]++
15+
}
16+
17+
let q = []
18+
for(let i = 1;i <=n;i++) {
19+
if(inDegree[i]===0) {
20+
q.push(i)
21+
dist[i] = time[i - 1]
22+
}
23+
}
24+
while(q.length) {
25+
const size = q.length, nxt = []
26+
27+
for(let i = 0; i < size; i++) {
28+
const cur = q[i]
29+
for(const e of (graph[cur] || [])) {
30+
dist[e] = Math.max(dist[e], dist[cur] + time[e - 1])
31+
inDegree[e]--
32+
if(inDegree[e] === 0) {
33+
nxt.push(e)
34+
}
35+
}
36+
}
37+
38+
q = nxt
39+
}
40+
41+
return Math.max(...dist)
42+
}
43+
44+
// another
45+
146
/**
247
* @param {number} n
348
* @param {number[][]} relations

0 commit comments

Comments
 (0)