说实话,有点被晴神的算法笔记误导了。做这题的第一想法当然是stl啦,但是他说map会超时。但是可以去改一下,换成ordered_map。那么就不会产生超时的情况了。
通过名字的与课程id进行映射。但是输出的时候注意一下排序就ok了。
代码如下:
#include <bits/stdc++.h>
using namespace std;
int main(){
unordered_map<string,vector<int>> stu;
int n,m;
cin>>n>>m;
for(int i=0;i<m;i++){
int id,cour;
cin>>id>>cour;//在id下存在若干的课程数
for(int i=0;i<cour;i++){
string name;cin>>name;
stu[name].push_back(id);
}
}
//要去排序一下不然通过不了
while(n--){
string name1;cin>>name1;
cout<<name1<<' '<<stu[name1].size();
sort(stu[name1].begin(),stu[name1].end());
for(auto stu1:stu[name1]) cout<<' '<<stu1;
puts("");
}
return 0;
}