Priority Queues

Discussion on C, C++ and C++11 at the COJ. This is the place to clear your doubts about these languages, and to share with the community the new things you learn about them.
Post Reply
Spartan
Posts: 11
Joined: 6 years ago
Gender: None specified

Priority Queues

Post by Spartan » 5 years ago

somebody knows how to use the priority queue of the stl, not with the data type int but with some other structure or class. I'm trying but i don't know how to indicate the priority order. I've already try with overloading operators but i'm having some troubles. Could anyone help me?



User avatar
Dariel
Posts: 51
Joined: 6 years ago
Location: Santiago de Cuba
Gender: None specified
Contact:

Re: Priority Queues

Post by Dariel » 4 years ago

Para este caso lo debemos hacer es sobre cargar el operardor < de la estructura, si tienes una estructura con dos campos Edad y Peso, queremos ordenar de menor a mayor por la edad y el peso.

Code: Select all

#include <cstdio>
using namespace std;
   struct Estudiante {
           int Edad, Peso;
           bool operator<(const Estudiante & Est) const {
           return ( (Edad<Est.Edad) || (Edad==Est.Edad && Peso<Est.Peso)) ;
  }E[100];
int N;
int main() {
   scanf("%d", &N);
   for(int i=0; i<N; i++)
      scanf("%d%d", &E[i].Edad, &E[i].Peso);
   sort(E, E+N);
   for(int i=0; i<N; i++)
      printf("%d %d\n", E[i]. Edad, E[i].Peso);
   return 0;
}
Para el caso de la Cola con prioridad, la cola por defecto escoge el menor y con la sobrecarga del operador < que hicimos anteriormente funciona perfectamente, entonces ¿que debemos hacer? pues lo siguiente:

Code: Select all

#include <cstdio>
#include <queue>
using namespace std;
......
priority_queue <Estudiante> PQ;
Estudiante A;
......
int main {
    scanf("%d", &N);
   for(int i=0; i<N; i++){
      scanf("%d%d", &A.Edad, &A.Peso);
      PQ.push(A);
    }
   while(!PQ.Empty()) {
        printf("%d %d\n", PQ.top().Edad, PQ.top().Peso);
        PQ.pop();
   }
   return 0;
}
La idea esta por ahí, espero que esto te ayude...
Salu2, Dariel.

Post Reply

Return to “C/C++/C++11”