implementation of dijkstra shortest path algo with the use of priority queue a.k.a heap