#2192

All Ancestors of a Node in a Directed Acyclic Graph

specialist · 675 · lc medium +30 · failed · 62.1% accepted · 1,751 likes · top 63%

Description

You are given a positive integer n representing the number of nodes in a Directed Acyclic Graph (DAG). Nodes are numbered 0 to n - 1.

You are also given a 2D integer array edges, where edges[i] = [fromi, toi] denotes a directed edge from fromi to toi.

Return a list answer where answer[i] is the sorted list of all ancestors of node i.

A node u is an ancestor of v if there exists a directed path from u to v.

Example 1:

Input: n = 8, edgeList = [[0,3],[0,4],[1,3],[2,4],[2,7],[3,5],[3,6],[3,7],[4,6]]
Output: [[],[],[],[0,1],[0,2],[0,1,3],[0,1,2,3,4],[0,1,2,3]]
Explanation:
The above diagram represents the input graph.
- Nodes 0, 1, and 2 do not have any ancestors.
- Node 3 has two ancestors 0 and 1.
- Node 4 has two ancestors 0 and 2.
- Node 5 has three ancestors 0, 1, and 3.
- Node 6 has five ancestors 0, 1, 2, 3, and 4.
- Node 7 has four ancestors 0, 1, 2, and 3.

Example 2:

Input: n = 5, edgeList = [[0,1],[0,2],[0,3],[0,4],[1,2],[1,3],[1,4],[2,3],[2,4],[3,4]]
Output: [[],[0],[0,1],[0,1,2],[0,1,2,3]]
Explanation:
The above diagram represents the input graph.
- Node 0 does not have any ancestor.
- Node 1 has one ancestor 0.
- Node 2 has two ancestors 0 and 1.
- Node 3 has three ancestors 0, 1, and 2.
- Node 4 has four ancestors 0, 1, 2, and 3.

Code

1
2
3