You are given an integer n and a directed graph with n nodes labeled from 0 to n - 1. This is represented by a 2D array edges, where edges[i] = [ui, vi, starti, endi] indicates an edge from node ui to vi that can only be used at any integer time t such that starti <= t <= endi.
You start at node 0 at time 0.
In one unit of time, you can either:
t satisfies starti <= t <= endi.Return the minimum time required to reach node n - 1. If it is impossible, return -1.
Example 1:
Input: n = 3, edges = [[0,1,0,1],[1,2,2,5]]
Output: 3
Explanation:

The optimal path is:
t = 0, take the edge (0 → 1) which is available from 0 to 1. You arrive at node 1 at time t = 1, then wait until t = 2.t = 2, take the edge (1 → 2) which is available from 2 to 5. You arrive at node 2 at time 3.Hence, the minimum time to reach node 2 is 3.
Example 2:
Input: n = 4, edges = [[0,1,0,3],[1,3,7,8],[0,2,1,5],[2,3,4,7]]
Output: 5
Explanation:

The optimal path is:
t = 1, then take the edge (0 → 2) which is available from 1 to 5. You arrive at node 2 at t = 2.t = 4, then take the edge (2 → 3) which is available from 4 to 7. You arrive at node 3 at t = 5.Hence, the minimum time to reach node 3 is 5.
Example 3:
Input: n = 3, edges = [[1,0,1,3],[1,2,3,5]]
Output: -1
Explanation:

Constraints:
1 <= n <= 1050 <= edges.length <= 105edges[i] == [ui, vi, starti, endi]0 <= ui, vi <= n - 1ui != vi0 <= starti <= endi <= 109Problem Overview: You are given a directed graph where each edge represents the time required to travel between two nodes. Starting from a source node, compute the minimum time required to reach a destination node. If multiple paths exist, you must choose the one with the smallest total travel time.
Approach 1: DFS with Path Exploration (Brute Force) (Time: O(V! ) worst case, Space: O(V))
The most direct idea is to explore every possible path from the source to the destination and track the total travel time for each path. Use a depth‑first search and maintain a running sum of edge weights while marking nodes as visited to avoid cycles. Whenever you reach the destination, update the minimum time found so far. This approach works for very small graphs but quickly becomes impractical because the number of possible paths grows exponentially. It mainly serves as a conceptual baseline before applying shortest path algorithms.
Approach 2: Dijkstra’s Algorithm with Min Heap (Optimal) (Time: O((V + E) log V), Space: O(V))
This problem is a classic single‑source shortest path scenario on a weighted directed graph. The optimal solution uses Dijkstra’s algorithm with a min heap (priority queue). First build an adjacency list representing outgoing edges for each node. Maintain a distance array where dist[i] stores the shortest known time to reach node i. Push the source node into a min heap with distance 0.
At each step, pop the node with the smallest current travel time. For each outgoing edge, compute the candidate time by adding the edge weight to the current distance. If this value is smaller than the stored distance, update it and push the neighbor into the heap. Because the heap always expands the node with the smallest known distance, the first time you finalize the destination node you have the optimal answer. This approach efficiently handles large graphs and sparse edge sets.
The algorithm relies heavily on data structures commonly used in graph problems, especially adjacency lists and priority queues. The heap operations ensure efficient selection of the next closest node, which is the key idea behind many shortest path algorithms. Implementations typically use a binary heap from the heap (priority queue) toolkit.
Recommended for interviews: Interviewers expect the Dijkstra approach. Mentioning the brute‑force DFS first shows you understand the search space and why naive exploration fails. Switching to Dijkstra demonstrates knowledge of weighted graph traversal and the ability to reduce exponential search into an efficient O((V + E) log V) solution.
Solutions for this problem are being prepared.
Try solving it yourself| Approach | Time | Space | When to Use |
|---|---|---|---|
| DFS Path Exploration (Brute Force) | O(V!) worst case | O(V) | Only for very small graphs or conceptual understanding of all possible paths |
| Dijkstra’s Algorithm with Min Heap | O((V + E) log V) | O(V) | General case for weighted directed graphs where edge weights represent travel time |
LeetCode 3604. Minimum Time to Reach Destination in Directed Graph | Dijkstra | Graph | Heap • Leet's Code • 288 views views
Watch 4 more video solutions →Practice Minimum Time to Reach Destination in Directed Graph with our built-in code editor and test cases.
Practice on FleetCodePractice this problem
Open in Editor