题目:1065 单身狗 - PAT (Basic Level) Practice (中文) (pintia.cn)
思想
把夫妻装入到 夫妻表(map)里面,然后把参加宴会的人装到哈希表里面
如果说哈希表中的值是0,说明某个人的对象(也就是他自己)没有来到了派对,也就是所谓的单身狗。
#include<bits/stdc++.h>
using namespace std;
map<int,int>mp;
map<int,int>haxi;
int a[10005];
vector<int>ans;
int main()
{
int n;cin>>n;
for(int i=0;i<n;i++)
{
int a,b;cin>>a>>b;
mp[a]=b;
mp[b]=a;
}
int m;cin>>m;
for(int i=0;i<m;i++)
{
cin>>a[i],haxi[a[i]]=1;
}
for(int i=0;i<m;i++)
{
//a[i]在夫妻队列中找另一个,找不到就是0,说明是单身狗
if (!haxi[mp[a[i]]])ans.push_back(a[i]);
}
sort(ans.begin(),ans.end());
cout<<ans.size()<<endl;
for (int i = 0; i < ans.size(); i++)
{
if (i)cout << " "; //如果i不为收首就打印空格
printf("%05d",ans[i]);
}
return 0;
}
#include<bits/stdc++.h>
using namespace std;
vector<int>ans;
map<int,int>mp;
int haxi[100005];
int arr[10005];
int main()
{
int n;cin>>n;
for(int i=0;i<n;i++)
{
int a,b;cin>>a>>b;
mp[a]=b;
mp[b]=a;
}
int m;cin>>m;
for(int i=0;i<m;i++)
{
cin>>arr[i];haxi[arr[i]]=1;
}
for(int i=0;i<m;i++)
{
if(!haxi[mp[arr[i]]])ans.push_back(arr[i]);
}
sort(ans.begin(), ans.end());
cout<<ans.size()<<endl;
for (int i = 0; i < ans.size(); i++)
{
if (i)cout << " "; //如果i不为收首就打印空格
printf("%05d", ans[i]);
}
return 0;
}