水题,但是通过这一题需要改进一点;
对于hash赋初值的时候一定要谨慎一点,不要随便赋值0,视输入的数据而定;
#include<iostream>
#include<stdlib.h>
#include<stdio.h>
#include<vector>
#include<set>
using namespace std;
using std::vector;
using std::set;
const int maxn=100100;
int mem[maxn]={-1};
bool vis[maxn]={false};
vector<int>output;
set<int>out;
int main(){
int n;
int a,b;
scanf("%d",&n);
for(int i=0;i<n;i++){
scanf("%d%d",&a,&b);
mem[a]=b;
mem[b]=a;
}
scanf("%d",&n);
bool flag=true;
for(int i=0;i<n;i++){
scanf("%d",&a);
vis[a]=true;
}
for(int i=0;i<maxn;i++){
if(vis[i]){
if(mem[i]==-1){
//如果是没结婚
out.insert(i);
}else{
//看看另一个成员来没来
if(!vis[mem[i]])
out.insert(i);
}
}
}
printf("%d\n",out.size());
bool f=true;
for(set<int>::iterator it=out.begin();it!=out.end();it++){
if(f){
printf("%05d",*it);
f=false;
}
else
printf(" %05d",*it);
}
system("pause");
return 0;
}
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。