2026-01-18 20:14:19 +09:00

38 lines
1.1 KiB
TypeScript

export {};
const input = require("fs").readFileSync(0).toString().trim().split("\n");
const T: number = Number(input[0]);
let idx: number = 1;
let res: number[] = [];
for(let t=0; t<T; t++) {
const [N, K]: number[] = input[idx++].split(" ").map(Number);
const line1: number[] = input[idx++].split(" ").map(Number);
const build_time: number[] = Array.from({length: N+1}, (_,i) => i===0 ? 0 : line1[i-1]);
let prev_build: number[][] = Array.from({length: N+1}, () => []);
for(let k=0; k<K; k++) {
const [X, Y]: number[] = input[idx++].split(" ").map(Number);
prev_build[Y].push(X);
}
let dp: number[] = new Array(N+1).fill(-1);
const solve = (target : number): number => {
if(dp[target] === -1) {
let max_build_time: number = 0;
for(let prev of prev_build[target]) {
max_build_time = Math.max(max_build_time, solve(prev));
}
dp[target] = build_time[target] + max_build_time;
}
return dp[target];
};
const W: number = Number(input[idx++]);
res.push(solve(W));
}
console.log(res.join("\n"));