๐จ ์ฐธ๊ณ ์ฝ๋
๐ ์ถ๋ ฅ์ ๋ฐ๋ก ํ๋ฉด ์๊ฐ์ด๊ณผ๊ฐ ๋ฐ์ํ๋ฏ๋ก ๋ฐฐ์ด์ ์ ์ฅํ ๋ค join์ ์ฌ์ฉํด ํ ๋ฒ์ ์ถ๋ ฅํ๋ค.
์ฝ๋
const fs = require('fs');
const input = fs.readFileSync('/dev/stdin').toString().trim().split('\n');
const [N, R, Q] = input.shift().split(" ").map(Number);
const tree = [];
for (let i = 0; i < N - 1; i++) {
const node = input[i].split(" ").map(Number);
if (!tree[node[0]]) tree[node[0]] = [];
if (!tree[node[1]]) tree[node[1]] = [];
tree[node[0]].push(node[1]);
tree[node[1]].push(node[0]);
}
const result = new Array(N + 1).fill(0);
const visited = new Array(N + 1).fill(0);
const dfs = (node) => {
let count = 1;
for (let i = 0; i < tree[node].length; i++) {
const next = tree[node][i];
if (visited[next]) {
count += result[next];
} else {
visited[next] = 1;
count += dfs(next);
}
}
result[node] = count;
return count;
};
visited[R] = 1;
dfs(R);
const answer = [];
for (let i = 0; i < Q; i++) {
answer.push(result[Number(input[i + N - 1])]);
}
console.log(answer.join("\n"));