题目链接
坑点
测试点3中的00000这个数据如果未处理的话会出错
复杂度要低,不然测试点3和4会超时
实现
#include <cstdio>
#include <map>
#include <vector>
#include <string>
#include <algorithm>
#define MAXSIZE 100000
using namespace std;
int main()
{
int N, M, a, b,i,num=0;
int couple[MAXSIZE] = { -1 };
int count[MAXSIZE] = {0};
scanf("%d", &N);
for (i = 0; i < N; i++)
{
scanf("%d %d", &a, &b);
couple[a] = b;
couple[b] = a;
}
scanf("%d", &M);
vector<int> bachelor, input(M);
for (i = 0; i < M; i++)
{
scanf("%d", &input[i]);
count[input[i]] = 1;
}
for (i = 0; i < M; i++)
{
if (count[couple[input[i]]] == 0 ||(input[i]==0 && couple[0]==-1))
{
num++; bachelor.push_back(input[i]);
}
}
printf("%d\n", num);
sort(bachelor.begin(), bachelor.end());
for (i = 0; i < bachelor.size(); i++)
{
if (i == 0) printf("%05d", bachelor[i]);
else
printf(" %05d", bachelor[i]);
}
return 0;
}