就是map和set的应用,没什么难度。
#include<iostream>
#include<set>
#include<string>
#include<map>
using namespace std;
int main(){
int n,m,course,num;
string name;
map<string,set<int>> mp;
scanf("%d %d",&m,&n);
for(int i=0;i<n;i++){
scanf("%d %d",&course,&num);
for(int j=0;j<num;j++){
cin>>name;
mp[name].insert(course);
}
}
for(int i=0;i<m;i++){
cin>>name;
cout<<name;
if(mp[name].size()!=0){
cout<<' '<<mp[name].size();
for(set<int>::iterator it=mp[name].begin();it!=mp[name].end();it++){
printf(" %d",*it);
}
printf("\n");
}
else
printf(" 0\n");
}
return 0;
}