原文鏈接:我的個人博客
原題鏈接
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;
}