前言
正文
参考题解
#include<iostream>
#include<vector>
#include<map>
#include<algorithm>
using namespace std;
/* 本题与PAT1039 Course List for Student相反,给定每名学生的选课列表, 输出每门课程下的选课人数以及选课的学生。 需要注意为了防止最后一个测试点超时,需要弄一个临时的vector指针 来引用其原map的vector,最后进行输出即可。同时注意printf输出vector中的 字符串时直接使用*it->c_str(),或者先用一个string str存储*it,再在输出的时候 使用str.c_str()。 */
map<int,vector<string>> mp;
int main(){
int n,k,c,ci;
string name;
scanf("%d%d",&n,&k);
for(int i=0;i<n;i++){
cin>>name>>c;
for(int j=0;j<c;j++){
scanf("%d",&ci);
mp[ci].push_back(name);
}
}
vector<string> *v=NULL;
//string str;
for(int i=1;i<=k;i++){
printf("%d %d\n",i,mp[i].size());
v=&mp[i];
sort(v->begin(),v->end());
for(auto it=v->begin();it!=v->end();it++){
//str=*it;
//printf("%s\n",str.c_str());
printf("%s\n",it->c_str());
}
}
return 0;
}