1065 单身狗 (25 分)
题目链接
算法分析
用map类型rel存下两个人的关系,用is数组记录是否到场,然后判断是否落单。
代码实现
#include<bits/stdc++.h>
using namespace std;
#define N 100000
int is[N], ans[N], num[N], t;
map< int , int >rel;
int main(){
int n, m, x, y;
scanf("%d", &n);
for(int i = 1; i <= n; ++ i){
scanf("%d%d", &x, &y);
rel[x] = y + 1;//细节处理
rel[y] = x + 1;
}
scanf("%d", &m);
for(int i = 1; i <= m; ++ i){
scanf("%d", &num[i]);
is[num[i]] = 1;
}
for(int i = 1; i <= m; ++ i){
if(!rel[num[i]]) ans[++ t] = num[i];
else{
if(is[rel[num[i]] - 1]) continue;
else ans[++ t] = num[i];
}
}
sort(ans + 1, ans + t + 1);
printf("%d\n", t);
for(int i = 1; i <= t; ++ i){
if(i == 1) printf("%05d", ans[i]);
else printf(" %05d", ans[i]);
}
return 0;
}