题意:给出一些cp,给出参加派对的人,问在派对中谁是没有cp的。
思路:存储cp,用set维护参加派对的人,遍历cp对,把同时在派对的人删除。
代码
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
#include <set>
using namespace std;
const int MAX_N = 50010;
typedef pair<string, string> P;
P input[MAX_N];
int M, Q;
char x[20];
set<string> st;
char s1[20], s2[20];
int main() {
// freopen("in.txt", "r", stdin);
// freopen("out.txt", "w", stdout);
scanf("%d", &M);
for (int i = 0; i < M; i++) {
scanf("%s %s", s1, s2);
input[i].first = s1; input[i].second = s2;
}
scanf("%d", &Q);
while (Q--) {
scanf("%s", x);
st.insert(x);
}
for (int i = 0; i < M; i++) {
if (st.count(input[i].first) && st.count(input[i].second)) {
st.erase(input[i].first);
st.erase(input[i].second);
}
}
printf("%lu\n", st.size());
for (auto it = st.begin(); it != st.end(); it++) {
if (it != st.begin()) printf(" ");
printf("%s", it->c_str());
}
return 0;
}