How do I use a PriorityQueue?

A PriorityQueue is a queue data structure that pops the element with the highest priority first. In Python, you can use the heapq module to create a PriorityQueue.

Here's an example of how to create a PriorityQueue and add elements to it:

import heapq

# Create a priority queue
pq = []

# Push an element onto the queue with a priority of 10
heapq.heappush(pq, (10, 'Task 1'))

# Push an element onto the queue with a priority of 5
heapq.heappush(pq, (5, 'Task 2'))

# Push an element onto the queue with a priority of 1
heapq.heappush(pq, (1, 'Task 3'))

# The queue now looks like this:
# [(1, 'Task 3'), (5, 'Task 2'), (10, 'Task 1')]

To pop an element off the queue, use the heapq.heappop() function:

# Pop the element with the lowest priority (i.e., 1)
print(heapq.heappop(pq))  # Output: (1, 'Task 3')

# Pop the element with the next lowest priority (i.e., 5)
print(heapq.heappop(pq))  # Output: (5, 'Task 2')

# Pop the element with the highest priority (i.e., 10)
print(heapq.heappop(pq))  # Output: (10, 'Task 1')

# The queue is now empty

You can also use the heapify() function to convert a regular list into a heap. For example:

# Convert a regular list into a heap
pq = [10, 5, 1]
heapq.heapify(pq)

# The list is now a heap
print(pq)  # Output: [1, 5, 10]

I hope this helps! Let me know if you have any questions.