首页 > 代码库 > hdu1434 优先队列

hdu1434 优先队列


#include<stdio.h>
#include<string.h>
#include<queue>
#include<iostream>
using namespace std;

struct node
{
    char name[25];
    int rp;
    bool operator < (const node& x) const
    {
        return rp>x.rp||(rp==x.rp&&strcmp(name,x.name)<0);
    }
}a,b;
int main()
{
    int n,m,i,j,k,l,cont;
    char str[25],rp;
    while(~scanf("%d%d",&n,&m))
    {
        priority_queue<node>q[10010];
        for(i=1;i<=n;i++)
        {
            scanf("%d",&cont);
            while(cont--)
            {
                scanf("%s%d",a.name,&a.rp);
                //strcpy(a.name,str);
                //a.rp=rp;
                q[i].push(a);
            }
        }
        for(i=1;i<=m;i++)
        {
            scanf("%s",str);
            if(str[0]==‘G‘&&str[4]==‘N‘)
            {
                scanf("%d%s%d",&k,a.name,&a.rp);
                q[k].push(a);
            }
            else if(str[0]==‘J‘)
            {
                scanf("%d%d",&k,&l);
                while(!q[l].empty())
                {
                    b=q[l].top();
                    q[l].pop();
                    q[k].push(b);
                }
            }
            else
            {   
                scanf("%d",&k);
                b=q[k].top();
                q[k].pop();
                printf("%s\n",b.name);
            }
        }
    }
    return 0;
}

hdu1434 优先队列