PAT A1121

clipboard.png
水題,但是通過這一題需要改進一點;

對於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;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章