UVA 540 小团体队列

这道题很有意思,一开始又想复杂了

#include <iostream>
#include <sstream>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <string>
#include <vector>
#include <set>
#include <cctype>
#include <algorithm>
#include <cmath>
#include <deque>
#include <queue>
#include <map>
#include <stack>
#include <list>
#include <iomanip>
using namespace std;
///
#define INF 0xffffff7
#define maxn 10086
///
int BelongTeam[1000000];  //Elements are integers in the range 0 - 999999
list<int> lists;
list<int>::iterator pTeams[1200];//最多1000个Team

int main()
{	///
	int i, j;
	int teams;
	int cases = 1;
	while (cin >> teams && teams != 0)
	{
		lists.clear();
		int nums(0);
		cout << "Scenario #" << cases << endl;
		for (i = 0; i < teams; i++)
		{
			pTeams[i] = lists.end();
			int nums(0);
			cin >> nums;
			for (j = 0; j < nums; j++)
			{
				int tempInput;
				cin >> tempInput;
				BelongTeam[tempInput] = i;
			}

		}
		string line;
		while (cin >> line && line != "STOP")
		{
			if (line == "ENQUEUE")
			{
				int tempInput;
				cin >> tempInput;
				if (pTeams[BelongTeam[tempInput]] != lists.end())
				{
					++pTeams[BelongTeam[tempInput]];
					pTeams[BelongTeam[tempInput]] = lists.insert(pTeams[BelongTeam[tempInput]], tempInput);
				}
				else
					pTeams[BelongTeam[tempInput]] = lists.insert(pTeams[BelongTeam[tempInput]], tempInput);
				
			}
			else if (line == "DEQUEUE")
			{
				int top = lists.front();
				if (pTeams[BelongTeam[top]] == lists.begin()) //如果某一个Team元素弹完了,尾部指针要放到链表最后保证正确
				{
					pTeams[BelongTeam[top]] = lists.end();
				}
				lists.pop_front();
				cout << top << endl;
			}
		}
		cout << endl;
		cases++;
	}
    ///
    return 0;
	
}


 

参考了http://www.cppblog.com/wuxu/archive/2011/11/24/160906.html

感觉这个方法很不错

迭代器指针数组的定义,链表的插入方式

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值