#include <stdio.h>
#include <string.h>
int a[1005][1005];
int p[1005][2];
int add[1000005];
struct link{
//int queue;
int sum;
int next;
}link[1005]={0};
int head,rear;
int num=1;
int main()
{
int key;
head=-1;
int n,m,k;
char s[100];
while(1)
{
scanf("%d",&n);
if(n==0)
break;
printf("Scenario #%d\n",num++);
int i,j;
for(i=1;i<=n;i++)
{
scanf("%d",&m);
for(j=1;j<=m;j++)
{
scanf("%d",&k);
add[k]=i;
}
}
while(1)
{
scanf("%s",s);
if(strcmp(s,"ENQUEUE")==0)
{
scanf("%d",&k);
key=add[k];
if(p[key][0]==p[key][1])
{
a[key][++p[key][1]]=k;
if(head==-1)
{
head=key;
link[key].next=-1;
link[key].sum++;
rear=key;
}
else
{
link[rear].next=key;
link[key].next=-1;
link[key].sum++;
rear=key;
}
}
else
{
a[key][++p[key][1]]=k;
link[key].sum++;
}
}
else if(strcmp(s,"DEQUEUE")==0)
{
key=head;
link[head].sum--;
if(link[head].sum==0)
head=link[head].next;
printf("%d\n",a[key][++p[key][0]]);
}
else if(strcmp(s,"STOP")==0)
break;
}
}
return 0;
}
UVA540 团体队列 Team Queue
最新推荐文章于 2024-09-10 14:49:32 发布