Please solve the programming task below using a self-contained code snippet in a markdown code block.

You are given a network of n nodes, labeled from 1 to n. You are also given times, a list of travel times as directed edges times[i] = (ui, vi, wi), where ui is the source node, vi is the target node, and wi is the time it takes for a signal to travel from source to target.
We will send a signal from a given node k. Return the minimum time it takes for all the n nodes to receive the signal. If it is impossible for all the n nodes to receive the signal, return -1.
 
Please complete the following python code precisely:
```python
class Solution:
    def networkDelayTime(self, times: List[List[int]], n: int, k: int) -> int:
```