队列"/>
POJ2259 Team Queue 模拟 队列
题目链接
=2259
分析
根据题意模拟,建一个队列表示当前有哪些团队,再给每个团队建一个队列,表示哪些成员在队伍中。
AC代码
#include <cstdio>
#include <cstring>
#include <queue>using namespace std;inline int read() {int num = 0;char c = getchar();while (c < '0' || c > '9') c = getchar();while (c >= '0' && c <= '9')num = num * 10 + c - '0', c = getchar();return num;
}const int maxt = 1e3 + 5, maxn = 1e6 + 5;int id, t, belong[maxn], vis[maxt];
queue<int> q[maxt];int main() {while (scanf("%d", &t) == 1 && t) {printf("Scenario #%d\n", ++id);memset(vis, 0, sizeof(vis));for (int i = 0; i <= t; ++i)while (!q[i].empty()) q[i].pop();for (int i = 1; i <= t; ++i) {int n = read();for (int j = 1; j <= n; ++j) belong[read()] = i;}char op[10];while (scanf("%s", op) == 1 && op[0] != 'S') {if (op[0] == 'E') {int x = read();if (!vis[belong[x]])vis[belong[x]] = 1, q[0].push(belong[x]);q[belong[x]].push(x);}else if (op[0] == 'D') {printf("%d\n", q[q[0].front()].front());q[q[0].front()].pop();if (q[q[0].front()].empty())vis[q[0].front()] = 0, q[0].pop();}}puts("");}return 0;
}
更多推荐
POJ2259 Team Queue 模拟 队列
发布评论