"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
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 #include <stdio.h> 2 #include <algorithm> 3 #include <queue> 4 #include <vector> 5 #include <set> 6 #include <map> 7 using namespace std; 8 const int maxn=100031; 9 int couple[maxn]={0}; 10 vector<int> v; 11 int peop[maxn]={0}; 12 int n; 13 int main(){ 14 scanf("%d",&n); 15 for(int i=0;i<n;i++){ 16 int cp,cp2; 17 scanf("%d %d",&cp,&cp2); 18 couple[cp]=cp2; 19 couple[cp2]=cp; 20 } 21 scanf("%d",&n); 22 for(int i=0;i<n;i++){ 23 int p; 24 scanf("%d",&p); 25 peop[p]=1; 26 v.push_back(p); 27 } 28 for(int i=0;i<n;i++){ 29 if(peop[v[i]]==1){ 30 if(peop[couple[v[i]]]==1 && couple[couple[v[i]]]==v[i]){ 31 peop[v[i]]=0; 32 peop[couple[v[i]]]=0; 33 } 34 } 35 } 36 int cnt=0; 37 for(int i=0;i<n;i++){ 38 if(peop[v[i]]==1){ 39 cnt++; 40 } 41 } 42 printf("%d\n",cnt); 43 int num=0; 44 sort(v.begin(),v.end()); 45 for(int i=0;i<n;i++){ 46 if(peop[v[i]]==1){ 47 printf("%05d",v[i]); 48 num++; 49 if(num!=cnt)printf(" "); 50 } 51 } 52 }
注意点:一开始想用set和map,发现map其实就是一个大数组,还不如直接开个大数组。一开始题目理解错了,以为只要找给的人里是单身狗的就行,结果是有对象的对象没来也算单身,行吧