您的位置:首页 > 编程语言 > C语言/C++

PAT甲级 1121 Damn Single (25分) set/C++

2020-06-24 04:26 190 查看

1121 Damn Single (25分)

题目大意:给定一些couple,并给出一个序列,找到其companion不在序列中的人。

#include<iostream>                  //输入输出流头文件
#include<set>                       //set集合
using namespace std;                //标准命名空间
int n,m,cnt=0;
int main(){                         //主函数
cin>>n;
int couple[100000],absent[100000];
for(int i=0;i<100000;i++) couple[i]=absent[i]=-1;
set<int> alone;
for(int i=0;i<n;i++){
int x,y;
cin>>x>>y;
couple[x]=y;
couple[y]=x;
}
cin>>m;
int *check=new int[m];//存放该序列
for(int i=0;i<m;i++){
cin>>check[i];
if(couple[check[i]]==-1) absent[check[i]]=-1;//单身
else absent[check[i]]=1;//有对象
}
for(int i=0;i<m;i++){
if(couple[check[i]]!=-1&&absent[couple[check[i]]]==1); //对象在序列中
else  {//对象不在序列中、单身
alone.insert(check[i]);//使用set存储,自动有序
cnt++;
}
}
cout<<cnt<<endl;
set<int>::iterator iter=alone.begin();
for(;iter!=alone.end();iter++,cnt--){
printf("%05d",*iter);
if(cnt<=1)cout<<endl;
else cout<<' ';
}
return 0;                       //返回0,如果不返回0,PAT会报错
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: