容器的使用很方便,这里如果不用字符串会效率高很多,但是用字符串影响的是读入的效率,通过关闭输入输出同步还是可以在一定程度 上解决问题的。
切记关闭同步以后不可以再使用 scanf和printf
附本人AC代码:
#include<iostream>
#include<algorithm>
#include<vector>
#include<map>
#include<string>
using namespace std;
map<string, vector<int>>Ma;
int main() {
ios::sync_with_stdio(false);
int N, K, id, num;
string name;
cin >> N >> K;
for (int i = 1; i <= K; i++) {
cin >> id >> num;
for (int j = 0; j < num; j++) {
cin >> name;
Ma[name].push_back(id);
}
}
for (int i = 0; i < N; i++) {
cin >> name;
cout<<name<<" "<<Ma[name].size();
sort(Ma[name].begin(), Ma[name].end());
for (int i = 0; i < Ma[name].size(); i++) {
cout << " " << Ma[name][i];
}
cout << endl;
}
return 0;
}