我是靠谱客的博主 唠叨魔镜,最近开发中收集的这篇文章主要介绍UVA540,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

题目链接(团体队列)
有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所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(45)

评论列表共有 0 条评论

立即
投稿
返回
顶部