UVA540-Team Queue

来源:互联网 发布:excel统计分析软件 编辑:程序博客网 时间:2024/05/02 08:49

队列问题的一道经典题,队列套着队列,思维逻辑强大的一下子就能想出来,想不出来画画也很快明白,可怜我憋了那么久才憋出来,还是逻辑太差。

#include<stdio.h>#include<queue>#include<algorithm>#include<map>using namespace std;map<int,int>team;int main(){    int t,cas=1;    while(scanf("%d",&t)!=EOF&&t){    queue<int> sum,xs[1010];        int n;    printf("Scenario #%d\n",cas++);        for(int i=0;i<t;i++)        {   scanf("%d",&n);            while(n--)            {            int x;            scanf("%d",&x);            team[x]=i;            }        }        char op[10];        while(scanf("%s",&op)){        if(op[0]=='S') break;        if(op[0]=='E'){            int q;            scanf("%d",&q);            int k=team[q];            if(xs[k].empty()) sum.push(k);            xs[k].push(q);        }        if(op[0]=='D'){            int k=sum.front();            int ans=xs[k].front();            printf("%d\n",ans);            xs[k].pop();            if(xs[k].empty()) sum.pop();        }        }        printf("\n");    }    return 0;}



0 0