我用了a数组来解题,比如编号11111的人的伴侣编号为22222,那么a[11111]=22222,a[22222]=11111,这样相当于把两个情侣绑定在一起了,知道其中一个人的编号,另外一个人的编号也就知道了。
#include <iostream>
#include<algorithm>
#include<cstdio>
#include<cmath>
using namespace std;
int a[100001] = {0}, b[10001],c[10001];
int main()
{
int m,n,p,q,num=0;
cin >> n;
for (int i = 0; i < n; i++) {
cin >> p >> q;
a[p] = q;
a[q] = p;
}
cin >> m;
for (int i = 0; i < m; i++)
cin >> b[i];
for (int i = 0; i < m; i++) {
bool flag = false;
for(int j=0;j<m;j++)
if (a[b[i]] == b[j]) {
flag = true;
break;
}
if (flag == false) {
c[num] = b[i];
num++;
}
}
if (num == 0)
cout << 0;//测试点1,如果全部配对成功,输出0
else {
sort(c, c + num);
cout << num << endl;
printf("%05d", c[0]);//测试点3,比如输出编号1的时候应输出00001五位数字
for (int i = 1; i < num; i++)
printf(" %05d", c[i]);//测试点3,输出5位数字
}
}