#include <bits/stdc++.h> using namespace std; int main() { int n, m, s = 0, t = 0; set<string> unlegal; cin >> n >> m; while(m--){ string str; cin >> str; unlegal.insert(str); } while(n--){ int num, flag = false; string stu, thing; vector<string> v; cin >> stu >> num; while(num--){ cin >> thing; if(unlegal.find(thing) != unlegal.end()){ v.push_back(thing); flag = true; } } if(flag){ s++; cout << stu << ":"; for(auto vi: v){ t++; cout << " " << vi; } cout << endl; } } cout << s << " " << t; }
原来队列取元素是 front() 和 back() 而不是 stack 堆栈的 top() 。不过像这里直接用迭代器 foreach 也可以。