Dijkstra Shortest path algorithm.

This algorithm uses Adjacency list.