Python implementation of Dijkstra's shortest path algorithm