您的位置:首页 > 产品设计 > UI/UE

(队列的应用5.3.2)POJ 2259 Team Queue(队列数组的使用)

2013-10-31 09:23 519 查看
/*
* POJ_2259.cpp
*
*  Created on: 2013年10月30日
*      Author: Administrator
*/

#include <iostream>
#include <cstdio>
#include <queue>
#include <cstring>
#include <map>

using namespace std;

const int maxn = 1010;
int main(){
int n;
bool visited[maxn];

int counter = 1;
while(scanf("%d",&n)!=EOF,n){
int i;

/**
* que: 总队列,里面存的是子队列的编号
* q[i]: 第i个子队列,里面存的是元素值
*/
queue<int> q[maxn],que;
map<int,int> team;
for(i = 0 ; i < n ; ++i){
int m;
scanf("%d",&m);

int t;
while(m--){
scanf("%d",&t);
team[t] = i;
}
}

memset(visited,false,sizeof(visited));
printf("Scenario #%d\n",counter++);

char str[25];
while(scanf("%s",str)!=EOF){

if(strcmp(str,"STOP") == 0){
printf("\n");
break;
}
if(strcmp(str,"ENQUEUE") == 0){
int t;
scanf("%d",&t);

q[team[t]].push(t);
if(visited[team[t]] == false){
que.push(team[t]);
visited[team[t]] = true;
}
}else if(strcmp(str,"DEQUEUE") == 0){
printf("%d\n",q[que.front()].front());
q[que.front()].pop();

if(q[que.front()].empty()){
visited[que.front()] = false;
que.pop();
}
}
}

}

return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: