#include <iostream>
#include <queue>

struct dato {
   int vertice;
   int costo;
};

// debemos responder: ¿d1 nos importa MENOS que d2? (nos importa menos si cuesta más)
bool operator<(dato d1, dato d2) {
   return d1.costo > d2.costo;
}

int main( ) {
   std::priority_queue<dato> cp;
   cp.push(dato(5, 7));
   cp.push(dato(9, 2));
   cp.push(dato(5, 3));
   cp.push(dato(1, 8));

   while (!cp.empty( )) {
      dato d = cp.top( );
      cp.pop( );
      std::cout << "(" << d.vertice << "," << d.costo << ")\n";
   }
}
