1
var getAncestors = function (n, edges) {4
const inDegrees = new Array(n).fill(0);6
for (let i = 0; i < n; ++i) {8
ancestors[i] = new Set();11
for (const [from, to] of edges) {18
for (let i = 0; i < n; ++i) {19
if (inDegrees[i] === 0) queue.push(i);22
while (queue.length > 0) {23
const node = queue.shift();25
for (const child of adj[node]) {28
if (inDegrees[child] === 0) queue.push(child);30
ancestors[child].add(node);31
ancestors[node].forEach((prev) => ancestors[child].add(prev));37
for (let i = 0; i < n; ++i) {38
res[i] = [...ancestors[i]].sort((a, b) => a - b);