分值 : 25 难度 : 水题 思路 : 贼简单 坑点 : 就是我的实现方式里面 会碰到couple初值是 0 那么就会碰到 0成员couple歧义
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
#include <iostream>using namespace std;int couple[100000];int flag[100000] ;int main() { int N , K ; cin >> N ; for(int i = 0 ; i<100000 ; i++) couple[i] = -1 ; for(int i = 0 ; i< N ; i++) { int c1 ,c2 ; cin >> c1 >> c2 ; couple[c1]= c2 ; couple[c2] =c1 ; } cin >> K ; for(int i = 0 ; i< K ; i++) { int temp ; cin >> temp ; flag[temp] = 1 ; } int cur = 0 ; int count = 0 ; for(int i = 0 ; i< 100000 ;i++) { if(!flag[i]) continue; int oppose = couple[i] ; if(oppose==-1) //没有老公 count ++ ; else if(oppose!=-1 && !flag[oppose]) // 他老公不在 count ++ ; else if(oppose!=-1 && flag[oppose]) //老公在 { flag[i] = 0 ; flag[oppose] = 0 ; } } cout<< count <<endl ; for(int i = 0 ; i< 100000 ;i++) { if(flag[i]) { if(cur++) cout <<" "; printf("%05d" ,i ); } }}