分析:<map>和<queue>生动运用
<map>存储键值为每个人的编号,映照为所在团队;另外设置两个队列,一个存储团队,另一个存储每个团队里的人
具体代码:
</pre><pre class="cpp" name="code">#include <cstdio>
#include <map>
#include <queue>
#include <iostream>
using namespace std;
const int maxn=1005;
int main()
{
int t,kase=0;
while (scanf("%d",&t)==1&&t)
{
printf("Scenario #%d\n",++kase);
map<int,int> team;
for (int i=0;i<t;i++)
{
int n,x;
scanf("%d",&n);
while (n--){scanf("%d",&x);team[x]=i;}
}
queue<int>q,q2[maxn];
for (;;)
{
int x;
char cmd[10];
scanf("%s",cmd);
if (cmd[0]=='S')break;
else if (cmd[0]=='D')
{
int t=q.front();
printf("%d\n",q2[t].front());
q2[t].pop();
if (q2[t].empty()) q.pop();
}
else if (cmd[0]=='E')
{
scanf("%d",&x);
int t=team[x];
if (q2[t].empty()) q.push(t);
q2[t].push(x);
}
}
printf("\n");
}
return 0;
}