PAT 1121

题目 : Damn Single

分值 : 25
难度 : 水题
思路 : 贼简单
坑点 : 就是我的实现方式里面 会碰到couple初值是 0 那么就会碰到 0成员couple歧义

具体代码如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
#include <iostream>
using namespace std;
int couple[100000];
int flag[100000] ;
int main() {
int N , K ;
cin >> N ;
for(int i = 0 ; i<100000 ; i++)
couple[i] = -1 ;
for(int i = 0 ; i< N ; i++)
{
int c1 ,c2 ;
cin >> c1 >> c2 ;
couple[c1]= c2 ;
couple[c2] =c1 ;
}
cin >> K ;
for(int i = 0 ; i< K ; i++)
{
int temp ;
cin >> temp ;
flag[temp] = 1 ;
}
int cur = 0 ;
int count = 0 ;
for(int i = 0 ; i< 100000 ;i++)
{
if(!flag[i]) continue;
int oppose = couple[i] ;
if(oppose==-1) //没有老公
count ++ ;
else if(oppose!=-1 && !flag[oppose]) // 他老公不在
count ++ ;
else if(oppose!=-1 && flag[oppose]) //老公在
{
flag[i] = 0 ;
flag[oppose] = 0 ;
}
}
cout<< count <<endl ;
for(int i = 0 ; i< 100000 ;i++)
{
if(flag[i])
{
if(cur++)
cout <<" ";
printf("%05d" ,i );
}
}

}