概述
题解:用一个map存储每个号码的队伍号,然后再用二维队列存放每个队伍的进场号码,最后再用一个队列存储已经在排队的队伍号,队伍空了就pop掉,下一个队伍补上。
#include <cstdio>
#include <cstring>
#include <queue>
#include <map>
using namespace std;
int main() {
int t, n, a, cases = 1, flag;
queue<int> q[1005];
queue<int> q2;
char str[10];
while (scanf("%d", &t) && t) {
map<int,int> m;
for (int i = 1; i <= t; i++) {
scanf("%d", &n);
for (int j = 1; j <= n; j++) {
scanf("%d", &a);
m[a] = i;
}
}
printf("Scenario #%dn", cases++);
while (scanf("%s", str)) {
if (str[0] == 'S')
break;
else if (str[0] == 'E') {
scanf("%d", &a);
if (q[m[a]].empty())
q2.push(m[a]);
q[m[a]].push(a);
}
else {
flag = q2.front();
printf("%dn", q[flag].front());
q[flag].pop();
if (q[flag].empty()) {
q2.pop();
}
}
}
printf("n");
for (int i = 1; i <= t; i++)
while (!q[i].empty())
q[i].pop();
while (!q2.empty())
q2.pop();
}
return 0;
}
最后
以上就是怕孤独宝贝为你收集整理的uva 540(线性表)的全部内容,希望文章能够帮你解决uva 540(线性表)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复