题目传送门:https://pintia.cn/problem-sets/994805260223102976/problems/994805266942377984
题解:
#include<map> #include<set> #include<string> #include<iomanip> #include<iostream> using namespace std; int main() { set<int>s, ans; map<int, int>Wife; int n, num1, num2, M; cin >> n; while (n--) { cin >> num1 >> num2; Wife[num1] = num2; Wife[num2] = num1; } cin >> M; int *p = new int[M]; for (int i = 0; i < M; i++) { cin >> p[i]; s.insert(p[i]); } for (int i = 0; i < M; i++) { if (s.find(Wife[p[i]]) == s.end()) {//Wife[p[i]]代表其配偶,在集合中没找到 ans.insert(p[i]);//放到新的集合中 } } cout << ans.size() << endl; set<int>::iterator it; for (it = ans.begin(); it != ans.end(); it++) { if (it != ans.begin()) cout << " "; cout << setw(5) << setfill('0') << *it;//注意不足5位补0 } return 0; }