题目地址:点击打开链接
C++代码:
#include <iostream> #include <map> #include <utility> #include <string> using namespace std; const int maxsize=1010; struct LinkNode { LinkNode *left,*right; int data; }; void del(LinkNode *p) { LinkNode *l=p->left; LinkNode *r=p->right; l->right=r; if(r) r->left=l; delete p; } void ins(LinkNode *p,int x) { LinkNode *q=new LinkNode; q->data=x; q->left=p; q->right=p->right; if(p->right) p->right->left=q; p->right=q; } int main() { int n; int cas=1; while(cin>>n&&n!=0) { LinkNode *p[maxsize]={NULL}; LinkNode *head=new LinkNode; head->right=NULL; LinkNode *last=head; map<int,int> mii; int i; for(i=0;i<n;++i) { int k; cin>>k; while(k--) { int x; cin>>x; mii.insert(make_pair(x,i)); } } string s; int x; cout<<"Scenario #"<<cas++<<endl; while(cin>>s&&s!="STOP") { if(s=="ENQUEUE") { cin>>x; if(p[mii[x]]==NULL||p[mii[x]]==last) { ins(last,x); last=last->right; p[mii[x]]=last; } else { ins(p[mii[x]],x); p[mii[x]]=p[mii[x]]->right; } } else { x=head->right->data; if(p[mii[x]]==head->right) p[mii[x]]=NULL; del(head->right); cout<<x<<endl; } } cout<<endl; } return 0; }
UVa540 - Team Queue,布布扣,bubuko.com
原文:http://blog.csdn.net/leizh007/article/details/20383235