#include <iostream>
using namespace std;
int a[100000];
int main() {
int n;
cin >> n;
int x, id;
while(n--) {
cin >> x;
if (x >= 2) {
while(x--) {
cin >> id;
a[id] = 1;
}
} else
cin >> id;
}
int m, flag = 0;
cin >> m;
while(m--) {
cin >> id;
if (a[id] != 1) {
if (flag)
cout << " ";
printf("%05d", id);
flag = 1;
a[id] = 1;
}
}
if (flag == 0)
printf("No one is handsome");
return 0;
}
在set中放入所有有朋友的集合,当然要定义成set < string > s,要不然还是得考虑域宽的问题。然后用,s.insert(str)来进行字符串的插入,s.find(str)==s.end()表示没有找到,大致思路都差不多。下面代码还有很多有趣的地方,可以耐心看一看
#include <bits/stdc++.h>
using namespace std;
int n, k, m, x;
bool flag;
set<int>s, ans;
int main() {
cin >> n;
while (n--) {
cin >> k;
if (k >= 2)
while (k--) {
cin >> x;
s.insert(x);
} else
cin >> x;
}
cin >> m;
while (m--) {
cin >> x;
if (s.find(x) == s.end() && ans.find(x) == ans.end()) {
ans.insert(x);
if (flag)
cout << ' ';
flag = 1;
cout << setw(5) << setfill('0') << x;
}
}
if (!flag)
cout << "No one is handsome";
return cout << endl, 0;
}