#include<bits/stdc++.h>
using namespace std;
#define int long long
inline int read(){
int x=0;bool flag=false;char ch=getchar();
while(ch<'0'||ch>'9'){
if(ch=='-') flag=true;
ch=getchar();
}
while(ch>='0'&&ch<='9') x=(x<<3)+(x<<1)+(ch^48),ch=getchar();
return flag?~x+1:x;
}
inline void write(int x){
if(x<0){putchar('-');x=(~x+1);}
if(x/10) write(x/10);
putchar((x%10)^48);
return;
}
const int N=1005;
const int M=1e6+5;
queue<int> q;
queue<int> qq[N];
int bin[M],n;
int vis[N];
char s[10];
signed main(){
int cnt_sj=0;
while(++cnt_sj){
n=read();
if(n==0) break;
memset(vis,0,sizeof vis);
for(int i=1;i<=n;++i){
int tmp=read();
for(int j=1;j<=tmp;++j){int x=read();bin[x]=i;}
}
printf("Scenario #%d\n",cnt_sj);
// while(!q.empty()) q.pop();
// for(int i=1;i<=n;++i) while(!qq[i].empty()) qq[i].pop();
while(scanf("%s",s)){
if(s[0]=='S') break;
if(s[0]=='E'){
int x=read(),y=bin[x];
if(vis[y]) qq[y].push(x);
else q.push(y),qq[y].push(x),vis[y]=true;
}
if(s[0]=='D'){
write(qq[q.front()].front());puts("");
if(!qq[q.front()].empty()) qq[q.front()].pop();
if(qq[q.front()].empty()) q.pop();
}
}
puts("");
}
return 0;
}
感觉没有问题啊。。隔壁大佬也segment fault。。。