forked from doocs/leetcode
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathSolution.ts
35 lines (32 loc) · 1 KB
/
Solution.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
function maximalPathQuality(values: number[], edges: number[][], maxTime: number): number {
const n = values.length;
let g: Array<Array<Array<number>>> = Array.from({ length: n }, v => new Array());
for (let edge of edges) {
let [u, v, t] = edge;
g[u].push([v, t]);
g[v].push([u, t]);
}
let visited = new Array(n).fill(false);
let ans = 0;
function dfs(u: number, time: number, value: number): void {
// 索引0为终点
if (!u) {
ans = Math.max(value, ans);
}
for (let [v, dist] of g[u]) {
if (time - dist >= 0) {
if (!visited[v]) {
visited[v] = true;
dfs(v, time - dist, value + values[v]);
visited[v] = false; // 回溯
} else {
dfs(v, time - dist, value);
}
}
}
}
// 索引0为起点
visited[0] = true;
dfs(0, maxTime, values[0]);
return ans;
}