intmain() { vector<vector<int>> resV; int num; cin >> num; for (int i = 0; i < num; i++) { int cat; cin >> cat; //存放该作品内所有素材的vector vector<int> tempV; for (int j = 0; j < cat; j++) { int mem; cin >> mem; tempV.push_back(mem); //cout << tempV[j]; } //能否找到已存在的类,能找到就将tempV添加进去 int label = 0; for (int k = 0; k < tempV.size(); k++) { for (int out = 0; out < resV.size(); out++) { int flag = 0; for (int in = 0; in < resV[out].size(); in++) {
if (tempV[k] == resV[out][in]) { label = 1; flag = 1; for (int copy = 0; copy < tempV.size(); copy++) { //检查重复素材,重复的素材不添加,只在已有的分类中添加还未加入的素材 if (find(resV[out].begin(), resV[out].end(), tempV[copy]) == resV[out].end()) resV[out].push_back(tempV[copy]); } break; } } //不用再继续遍历后面的子vector了,添加进一个分类中就一定不会添加进另外一个分类 if (flag == 1) break; } } //是新的素材分类 if (label == 0) { resV.push_back(tempV); } } //子vector按最小元素排序 sort(resV.begin(), resV.end()); for (int i = 0; i < resV.size(); i++) { //子vector内部排序 sort(resV[i].begin(), resV[i].end()); for (int j = 0; j < resV[i].size(); j++) cout << resV[i][j] << " "; cout << endl; } return0; }