题目
思路
利用map<string,set < int >>容器即可
代码
#include <iostream>
#include <string>
#include<algorithm>
#include<vector>
#include<stack>
#include<map>
#include<set>
#include<queue>
#include<list>
#include<sstream>
#include<string.h>
#include<math.h>
using namespace std;
#define nmax 20000
#define inf 999999
map<string, set<int>> info;
int pnum, cnum;
int main()
{
cin >> pnum >> cnum;
for (int i = 0; i < cnum; ++i) {
int courseID, stunum;
cin >> courseID >> stunum;
for (int i = 0; i < stunum; ++i) {
string stu;
cin >> stu;
auto p = info.find(stu);
if (p != info.end())
p->second.insert(courseID);
else {
set<int> tmp;
tmp.insert(courseID);
info.insert(pair<string, set<int>>(stu, tmp));
}
}
}
for (int i = 0; i < pnum; ++i) {
string query;
cin >> query;
auto p = info.find(query);
if (p != info.end())
cout << query << " " << p->second.size();
else {
cout << query << " " << "0"<<endl;
continue;
}
for (auto& tmp : p->second)
cout << " " << tmp;
cout << endl;
}
}