#include <iostream>
#include <map>
#include <cstring>
#include <queue>
#include <stdio.h>
using namespace std;
int main()
{
int t,n,m,w;
char a[20];
bool visit[1010];
int cases=1;
while(scanf("%d",&t)==1&&t)
{
map<int,int> team;//用map快速查找元素是否在队中
queue<int> que,q[1010];//que是表示大的队列,相当于列.而q[]是相当于大队列的一个分支,相当于行
memset(visit,false,sizeof(visit));
printf("Scenario #%d\n",cases++);
for(int i=0; i<t; i++)
{
scanf("%d",&n);
while(n--)
{
scanf("%d",&m);
team[m]=i;//标记
}
}
while(scanf("%s",a)==1)
{
if(strcmp(a,"STOP")==0)
{
printf("\n");
break;
}
else if(strcmp(a,"ENQUEUE")==0)
{
scanf("%d",&w);
q[team[w]].push(w);//入队
if(visit[team[w]]==false)//如果元素不在队中,添加到总队列的末尾
{
que.push(team[w]);
visit[team[w]]=true;//标记为已访问
}
}
else
{
printf("%d\n",q[que.front()].front());
q[que.front()].pop();
if(q[que.front()].empty())//如果行队列为空.将整个队列删除
{
visit[que.front()]=false;
que.pop();
}
}
}
}
return 0;
}
Team Queue STL
最新推荐文章于 2020-10-30 19:21:13 发布