当前位置:编程学习 > C/C++ >>

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

 
/* 
 * 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;  
}  

 

补充:软件开发 , C++ ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,