【PAT乙級】1065 單身狗

小白刷PAT發表於2020-10-09

題目連結:1065 單身狗

#include <iostream>
#include <algorithm>
using namespace std;

int main(){
    int N, M ,a[100001] = {0}, b[100000], c, d , count = 0, countj = 0;
    cin >> N;
    for(int i=0;i<N;i++){
        cin >> c >> d;
        a[c] = d+1;//寫完才發現為0情況會出問題,用+1的辦法來修復bug
        a[d] = c+1;
    }
    cin >> M;
    for(int i=0;i<M;i++){
        cin >> c;
        if(!a[c]) b[count++] = c;//單身狗直接輸出
        else if(a[a[c]-1]!=-1){//取值時注意-1,伴侶未來暫時入組
            b[count++] = c;
            a[c] = -1;
        }
        else{//伴侶來了在組裡找到拉出來
            for(int j=0;j<count;j++){
                if(b[j] == a[c] - 1){
                    b[j] = -1;
                    countj++;//記下拉了幾個人出來
                }
            }
        }
    }
    cout << count - countj << endl;
    sort(b,b+count);//給組裡的沒人陪排下序
    for(int i=countj;i<count;i++){
        printf("%05d",b[i]);
        if(i!=count-1) cout << ' ';
    }
}

 

相關文章