priority queue useful for dijkstra algorithm because of the update_key function