夫妇两人都来了才算,单一个人来还是算单身狗。。。做个题都要被虐。。。嘤嘤嘤。。
不过这次才知道map到int里面没有的元素会被默认为0。
case 2 是输出为0的情况,如果用set需要判定下结果是否为0;
#include <iostream>
#include <string>
#include <algorithm>
#include <vector>
#include <map>
#include <set>
#include <cstring>
#define MAX 100000
using namespace std;
int n, m;
int list[MAX];
bool isCome[MAX];
map <int, int> Couple;
vector <int> single;
int main() {
cin >> n;
memset(isCome, false, sizeof(isCome));
memset(list, 0, sizeof(list));
int c1, c2;
for (int i = 0; i < n; i++) {
cin >> c1 >> c2;
Couple[c1] = c2;
Couple[c2] = c1;
}
cin >> m;
int id;
for (int i = 0; i < m; i++) {
cin >> id;
isCome[id] = true;
}
for (int i = 0; i < MAX; i++) {
if (list[i] != 0 && list[i] != 2)
isCome[i] = true;
}
for (int i = 0; i < MAX; i++) {
if (isCome[i] && !isCome[Couple[i]]) {
single.push_back(i);
}
}
sort(single.begin(), single.end());
cout << single.size() << endl;
if (single.size() != 0) {
for (int i = 0; i < single.size() - 1; i++) {
printf("%05d ", single[i]);
}
printf("%05d", single[single.size() - 1]);
}
return 0;
}