题意:给出N对夫妇,再给出M个参加party的人,求出其中单身狗的个数。
题解:map(unordered_map)容器的应用,将M个人中单身人数(除掉夫妇)+夫妇中只有一人出席的人数。
注意点:注意序号从0开始,所以将序号+1,以防出现映射到0的情况,造成出错。
code in view
#include<bits/stdc++.h>
using namespace std;
const int maxn=1e5+10;
int n,m;
int peo[maxn];
set<int> s;
unordered_map<int,int> mp;
unordered_map<int,int> now;
int main(){
scanf("%d",&n);
int a,b;
for(int i=1;i<=n;i++){
scanf("%d%d",&a,&b);
a++;
b++;
mp[a]=b;
mp[b]=a;
}
scanf("%d",&m);
for(int i=1;i<=m;i++){
scanf("%d",&peo[i]);
peo[i]+=1;
now[peo[i]]=1;
}
// cout<<now.size()<<endl;
// 使用now遍历会报错,具体原因不明
for(int i=1;i<=m;i++){
if(!mp[peo[i]]||!now[mp[peo[i]]]) s.insert(peo[i]-1);
}
printf("%d\n",s.size());
for(auto it=s.begin();it!=s.end();it++){
if(it!=s.begin()) printf(" ");
printf("%05d",*it);
}
system("pause");
return 0;
}