首页 > 代码库 > POJ 2259 队列
POJ 2259 队列
链接:
http://poj.org/problem?id=2259
题意:
排队吃饭,有n个team,每当一个人过来的时候,只要前面有他认识的人,就会直接插到那个team的后面,否则从后面排队
然后就是询问你每次出队的是谁
题解:
用两个队列就可以了,主队列里面是team编号,然后每个team再开一个队列就可以了
代码:
31 int n;32 queue<int> Q[1010];33 queue<int> que;34 int Hash[MAXN];35 36 int main() {37 int cas = 1;38 while (cin >> n, n) {39 rep(i, 0, n) while (!Q[i].empty()) Q[i].pop();40 while (!que.empty()) que.pop();41 rep(i, 0, n) {42 int m;43 cin >> m;44 while (m--) {45 int a;46 cin >> a;47 Hash[a] = i;48 }49 }50 cout << "Scenario #" << cas++ << endl;51 string s;52 while (cin >> s && s != "STOP") {53 if (s == "ENQUEUE") {54 int a;55 cin >> a;56 int id = Hash[a];57 if (Q[id].empty()) que.push(id);58 Q[id].push(a);59 }60 else {61 int id = que.front();62 cout << Q[id].front() << endl;63 Q[id].pop();64 if (Q[id].empty()) que.pop();65 }66 }67 cout << endl;68 }69 return 0;70 }
POJ 2259 队列
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。