Description
There are N
network nodes, labelled 1
to N
.
Given times
, a list of travel times as directed edges times[i] = (u, v, w)
, where u
is the source node, v
is the target node, and w
is the time it takes for a signal to travel from source to target.
Now, we send a signal from a certain node K
. How long will it take for all nodes to receive the signal? If it is impossible, return -1
.
Example
Input: times = [[2,1,1],[2,3,1],[3,4,1]], N = 4, K = 2
Output: 2
Solution
By observation, we can tell this is a single-source shortest-path problem. So we can simply implement the Dijkstra’s algorithm to solve the problem.
Here is my code:
1 | from collections import defaultdict |
Analysis
The time complexity is O(E logE) since we use a heap to perform the Dijkstra
.
Visit my Visualizer page for intuitive visualization of the Dijkstra's algorithm
.