乐逍遥xwl

导航

1065 单身狗

“单身狗”是中文对于单身人士的一种爱称。本题请你从上万人的大型派对中找出落单的客人,以便给予特殊关爱。

输入格式:

输入第一行给出一个正整数 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\n",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 }

 

 

posted on 2019-03-05 21:03  乐逍遥xwl  阅读(129)  评论(0编辑  收藏  举报