----------------------------------------------
Dijkstra's algorithm to find the shortest path
----------------------------------------------

See https://en.wikipedia.org/wiki/Dijkstra%27s_algorithm
