“单身狗”是中文对于单身人士的一种爱称。本题请你从上万人的大型派对中找出落单的客人,以便给予特殊关爱。
输入格式:
输入第一行给出一个正整数 N(≤ 50 000),是已知夫妻/伴侣的对数;随后 N 行,每行给出一对夫妻/伴侣——为方便起见,每人对应一个 ID 号,为 5 位数字(从 00000 到 99999),ID 间以空格分隔;之后给出一个正整数 M(≤ 10 000),为参加派对的总人数;随后一行给出这 M 位客人的 ID,以空格分隔。题目保证无人重婚或脚踩两条船。
输出格式:
首先第一行输出落单客人的总人数;随后第二行按 ID 递增顺序列出落单的客人。ID 间用 1 个空格分隔,行的首尾不得有多余空格。
输入样例:
3
11111 22222
33333 44444
55555 66666
7
55555 44444 10000 88888 22222 11111 23333
输出样例:
5
10000 23333 44444 55555 88888
思路:直接用book数组标记解决......
1 #include<stdio.h>
2 #include<string.h>
3 #include<math.h>
4 #include<stdlib.h>
5 int main()
6 {
7 int book[50001]={0};
8 int N;
9 scanf("%d",&N);
10 int num1[100000],num2[100000];
11 for(int i=0;i<N;i++)
12 scanf("%d %d",&num1[i],&num2[i]);
13 int M;
14 scanf("%d",&M);
15 int id;
16 for(int i=0;i<M;i++)
17 {
18 scanf("%d",&id);
19 book[id]=1;
20 }
21 for(int i=0;i<N;i++)
22 {
23 if(book[num1[i]]==1&&book[num2[i]]==1)
24 {
25 M=M-2;
26 book[num1[i]]=0;
27 book[num2[i]]=0;
28 }
29 }
30 printf("%d
",M);
31 if(M==0)
32 return 0;
33 int t=0;
34 int danshen[100000];
35 for(int i=0;i<100000;i++)
36 {
37 if(book[i]==1)
38 danshen[t++]=i;
39 }
40 for(int i=0;i<t-1;i++)
41 {
42 printf("%05d ",danshen[i]);
43 }
44 printf("%05d",danshen[t-1]);
45 return 0;
46 }