#include <queue>
#include <vector>
#include <deque>
#include <list>

#include <iostream>

#include "priority_queue1.h"

using namespace std;

priority_queue <int, vector<int>, greater<int> > q;

priority_queue1::priority_queue1(int nodecount)
{
	prevTop=-1; i=0;
	initialize(nodecount);
}

void priority_queue1::initialize(int nodecount)
{
	for(i=0; i<nodecount; i++)
		q.push(i);
}

int priority_queue1::top()
{
	return q.top();
}

void priority_queue1::push(int node)
{
	q.push(node);
}

void priority_queue1::pop()
{
	do {
		prevTop = q.top();
		q.pop();
	} while(!q.empty() && q.top() == prevTop);
}

bool priority_queue1::isEmpty()
{
	return q.empty();
}