1. 程式人生 > >PAT A1121 Damn Single (25 分)

PAT A1121 Damn Single (25 分)

problem car tex tst having ext cati pan 一個

"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
技術分享圖片
 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 }
View Code

註意點:一開始想用set和map,發現map其實就是一個大數組,還不如直接開個大數組。一開始題目理解錯了,以為只要找給的人裏是單身狗的就行,結果是有對象的對象沒來也算單身,行吧

PAT A1121 Damn Single (25 分)