目的:找出单身狗
输入:
N 情侣对
M 来的人数
输出:
找出单生狗,输入总数
并且按照从小到大输出id
#include<stdio.h>
#include<unordered_map>
#include<map>
#include<vector>
using namespace std;
unordered_map<int,int> g;
map<int,bool> ans;
vector<int> single;
int N,M;
int main()
{
scanf("%d",&N);
for(int i=0;i<N;i++)
{
int u,v;
scanf("%d%d",&u,&v);
g[u] = v;
g[v] = u;
}
scanf("%d",&M);
for(int i=0;i<M;i++)
{
int u;
scanf("%d",&u);
ans[u] = true;
}
for(map<int,bool>::iterator it = ans.begin();it!=ans.end();it++)
{
int u,v;
u = it->first;
v = g[u];
if(ans.find(v)==ans.end())
{
single.push_back(u);
}
}
printf("%d\n",single.size());
for(int i=0;i<single.size();i++)
{
printf("%05d",single[i]);
if(i!=single.size()-1)
{
printf(" ");
}
}
return 0;
}
反思:我这样每次判断一个人,就要用map查找一次,时间用得多。可以用数组hash存,用空间换时间。