add priority queue implementation using binary heap