All Paths From Source to Target - Problem

Given a directed acyclic graph (DAG) of n nodes labeled from 0 to n - 1, find all possible paths from node 0 to node n - 1 and return them in any order.

The graph is given as follows: graph[i] is a list of all nodes you can visit from node i (i.e., there is a directed edge from node i to node graph[i][j]).

Input & Output

Example 1 — Basic DAG
$ Input: graph = [[1,2],[3],[3],[]]
Output: [[0,1,3],[0,2,3]]
💡 Note: There are two paths from node 0 to node 3: Path 1 goes 0→1→3, and Path 2 goes 0→2→3. Both paths reach the target node 3.
Example 2 — Single Path
$ Input: graph = [[4,3,1],[3,2,4],[3],[4],[]]
Output: [[0,4],[0,3,4],[0,1,3,4],[0,1,2,3,4],[0,1,4]]
💡 Note: There are 5 different paths from node 0 to node 4. Each path represents a different route through the DAG to reach the target.
Example 3 — Linear Path
$ Input: graph = [[1],[2],[]]
Output: [[0,1,2]]
💡 Note: Only one path exists: 0→1→2. This is a simple linear path from source to target.

Constraints

  • n == graph.length
  • 2 ≤ n ≤ 15
  • 0 ≤ graph[i][j] < n
  • graph[i][j] != i (i.e., there will be no self-loops)
  • All the elements of graph[i] are unique
  • The input graph is guaranteed to be a DAG

Visualization

Tap to expand
All Paths From Source to Target INPUT Directed Acyclic Graph (DAG) 0 1 2 3 Source: 0 (blue) Target: 3 (green) graph = [[1,2],[3],[3],[]] 0-->[1,2] 1-->[3] 2-->[3] 3-->[] ALGORITHM STEPS Optimized DFS 1 Initialize Start DFS from node 0 path = [0], result = [] 2 Explore Path 1 0 --> 1 --> 3 (target!) Save [0,1,3] to result 3 Backtrack + Explore 0 --> 2 --> 3 (target!) Save [0,2,3] to result 4 Complete All paths explored Return result array DFS Call Stack dfs(0) path:[0] dfs(1) path:[0,1] dfs(3) FOUND! dfs(2) path:[0,2] FINAL RESULT Found Paths Path 1: [0,1,3] 0 1 3 Path 2: [0,2,3] 0 2 3 Output: [[0,1,3],[0,2,3]] OK - 2 paths found Time: O(2^n * n) Space: O(n) Key Insight: In a DAG, DFS naturally explores all paths without cycles. We backtrack after reaching target or dead-end, building paths incrementally. No visited set needed since DAG guarantees no cycles - each path is unique! TutorialsPoint - All Paths From Source to Target | Optimized DFS Approach
Asked in
Facebook 12 Amazon 8 Google 6
125.0K Views
Medium Frequency
~15 min Avg. Time
4.3K Likes
Ln 1, Col 1
Smart Actions
💡 Explanation
AI Ready
💡 Suggestion Tab to accept Esc to dismiss
// Output will appear here after running code
Code Editor Closed
Click the red button to reopen