解题思路:简单使用queue和map
解题代码:
#include<iostream>
#include<cstdio>
#include<cstring>
#include<vector>
#include<queue>
#include<map>
using namespace std;
const int max1=1000+10;
int main(){
int T,Case=0;
while((cin>>T)&&T){
cout<<"Scenario #"<<++Case<<endl;
map<int,int>team;
for(int t=0;t<T;t++){
int n;
cin>>n;
int x;
while(n--){
cin>>x;
team[x]=t;
}
}
queue<int>q,q1[max1];
string str;
int num;
while(true){
cin>>str;
if(str[0]=='S') break;
else if(str[0]=='D'){
int t=q.front();
cout<<q1[t].front()<<endl;
q1[t].pop();
if(q1[t].empty()) q.pop();
}
else if(str[0]=='E'){
cin>>num;
int t=team[num];
if(q1[t].empty()) q.push(t);
q1[t].push(num);
}
}
cout<<endl;
}
return 0;
}