"Damn Single (单身狗)" is the Chinese nickname for someone who is being single. You are supposed to find those who are alone in a big party, so they can be taken care of.
Input Specification:
Each input file contains one test case. For each case, the first line gives a positive integer N (≤ 50,000), the total number of couples. Then N lines of the couples follow, each gives a couple of ID's which are 5-digit numbers (i.e. from 00000 to 99999). After the list of couples, there is a positive integer M (≤ 10,000) followed by M ID's of the party guests. The numbers are separated by spaces. It is guaranteed that nobody is having bigamous marriage (重婚) or dangling with more than one companion.
Output Specification:
First print in a line the total number of lonely guests. Then in the next line, print their ID's in increasing order. The numbers must be separated by exactly 1 space, and there must be no extra space at the end of the line.
Sample Input:
3
11111 22222
33333 44444
55555 66666
7
55555 44444 10000 88888 22222 11111 23333
Sample Output:
5
10000 23333 44444 55555 88888
题意:
找出查询序列中的单身人数。
思路:
用set将party上所有的人都存储起来,然后查找是否有couples在set中如果有的话则将其删除。
Code:
1 #include <bits/stdc++.h> 2 3 using namespace std; 4 5 int main() { 6 int n, m; 7 cin >> n; 8 vector<pair<int, int> > v; 9 int p1, p2; 10 for (int i = 0; i < n; ++i) { 11 cin >> p1 >> p2; 12 v.push_back({p1, p2}); 13 } 14 cin >> m; 15 int p; 16 set<int> s; 17 while (m--) { 18 cin >> p; 19 s.insert(p); 20 } 21 for (int i = 0; i < n; ++i) { 22 auto it1 = s.find(v[i].first); 23 auto it2 = s.find(v[i].second); 24 if (it1 != s.end() && it2 != s.end()) { 25 s.erase(it1); 26 s.erase(it2); 27 } 28 } 29 cout << s.size() << endl; 30 bool isFirst = true; 31 for (int i : s) { 32 if (isFirst) { 33 printf("%04d", i); 34 isFirst = false; 35 } else { 36 printf(" %04d", i); 37 } 38 } 39 return 0; 40 }