这道题是优先队列数组+结构体,题意很好懂,就是要注意最后记得把优先队列数组清空。
#include <iostream>
#include <string>
#include <cstring>
#include <queue>
using namespace std;
struct node
{
int RP;
char name[30];
bool operator < (const node a)const
{
if(a.RP!=RP)
return a.RP<RP;
else
return strcmp(a.name,name)>0;
}
};
node train;
int n,m;
priority_queue<node>q[100000];
int main()
{
int i,j,k,t,a,b,c,d;
char order[20];
while(cin>>n>>m)
{
for(i=1; i<=n; i++)
{
cin>>t;
for(j=0; j<t; j++)
{
cin>>train.name>>train.RP;
q[i].push(train);
}
}
for(i=0; i<m; i++)
{
cin>>order;
if(order[0]=='J')
{
cin>>a>>b;
while(!q[b].empty())
{
q[a].push(q[b].top());
q[b].pop();
}
}
if(order[4]=='U')
{
cin>>c;
cout<<q[c].top().name<<endl;
q[c].pop();
}
if(order[4]=='N')
{
cin>>d;
cin>>train.name>>train.RP;
q[d].push(train);
}
}
for(i=1; i<=n; i++)
while(!q[i].empty())
{
q[i].pop();
}
}
return 0;
}