思路:
一开始看到题目,我以为是并查集,然而并不是,就是简单的记录再输出。首先把不是一个人或者没有朋友圈的人排除掉,记录有朋友的人。然后进行枚举,找出在之前没有记录过的人,并输出。
具体看代码~~
#include<iostream>
#include<stdio.h>
#include<string.h>
using namespace std;
int main()
{
char a[100000], c = 0;
int N, K;
int count = 0, i, j, m;
long number;
scanf("%d", &N);
memset(a, 0, sizeof(a));
for (i = 0; i < N; i++)
{
scanf("%d", &K);
for (j = 0; j < K; j++)
{
scanf("%ld", &number);
if (K != 1)//朋友圈只有自己
{
a[number] = 1;
}
}
}
scanf("%d", &m);
for (i = 0; i < m; i++)
{
scanf("%ld", &number);
if (!a[number])
{
if (count != 0)
{
printf(" %05ld", number);
}//注意需要补零
else
{
printf("%05ld", number);
}
a[number] = 1;//保证多次查询只输出一次
count++;
}
}
if (!count)
{
printf("No one is handsome");
}
system("pause");
return 0;
}