概述
题目链接(团体队列)
有t个团队的人在排队,当新来一个人时,如果队伍中有这个人的团队,就排到团队的最后一个队友的最后,如果没有就排到队伍的最后。输入以下三个指令:
对于每个指令,输出对应的编号。
Input:
Output:
该题包含两个队列,排队的队列和每个团体成员的队列。使用一个队列存储当前排队的团队编号,一个队列存储团队的成员编号。将成员编号所在的团体编号记录,使用map集合记录成员编号对应的团队编号。
#include<iostream>
#include<queue>
#include<string>
#include<map>
const int maxn=1000+100;
using namespace std;
int main()
{
int t,n,x,casee=0;
while(cin>>t&&t)
{
cout<<"Scenario #"<<++casee<<endl;
map<int,int> team;
for(int i=1;i<=t;i++)
{
cin>>n;
while(n--)
{
cin>>x;
team[x]=i;//成员x所在团队i;
}
}
queue<int> que0,que[maxn];
string str;
int num;
while(cin>>str)
{
if(str=="ENQUEUE")
{
cin>>num;
int s=team[num];
if(que[s].empty())//只有当团队s中没有成员时,才将团队s进队。每一个团队只进一次
que0.push(s);
que[s].push(num);
}
else if(str=="DEQUEUE")
{
int num=que0.front();
cout<<que[num].front()<<endl;
que[num].pop();
if(que[num].empty())//当该团队num没有成员时,将该团队的编号出队。
que0.pop();
}
else if(str=="STOP")
break;
}
cout<<endl;
}
}
最后
以上就是唠叨魔镜为你收集整理的UVA540的全部内容,希望文章能够帮你解决UVA540所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复