原文链接:我的个人博客
原题链接
1121 Damn Single
与之相似的题目有1149 Dangerous Goods Packaging (25分)
思路
用map<string,string>
记录每个人的伴侣。用has<string,int>
记录在场的人的,在场则记为1,不在场默认为0。之后遍历,判断该人的伴侣是否在场,如果不在场则将他归为damn single,即push_back进相应的数组中。
代码
#include <bits/stdc++.h>
using namespace std;
map<string,string> m;
map<string,int> has;
int main(){
int n,k;
string a,b;
cin>>n;
for(int i=0;i<n;i++){
cin>>a>>b;
m[a] = b;//a的同伴是b
m[b] = a;
}
cin>>k;
vector<string>v,ans;
v.resize(k);
for(int i=0;i<k;i++){
cin>>v[i];
has[v[i]] = 1;
}
for(int i=0;i<v.size();i++){
if(has[m[v[i]]]==0){//同伴不在
ans.push_back(v[i]);
}
}
sort(ans.begin(),ans.end());
cout<<ans.size()<<endl;
for(int i=0;i<ans.size();i++){
cout<<ans[i];
if(i!=ans.size()-1) cout<<" ";
}
return 0;
}