您的位置:首页 > 运维架构

[bitset] POJ 2443——Set Operation

2017-07-07 08:43 274 查看
题目传送门

博主又来水blog啦

博主上一篇blog好像有提到这个bitset,其实那是博主并不是很懂,所以向Matchperson学习了这个操作。

题目概述

给定n个集合。

在提出Q个询问,询问x,y在n个集合中出现的集合有交集。

解题思路

读入的时候标记一下,然后并起来判断有没有1。

所以就可以bitset乱搞。

bitset大法好啊。

#include<cstdio>
#include<bitset>
using namespace std;
bitset<1005> s[10005];
int n,Q;
inline int _read(){
int num=0;char ch=getchar();
while (ch<'0'||ch>'9') ch=getchar();
while (ch>='0'&&ch<='9') num=num*10+ch-48,ch=getchar();
return num;
}
int main(){
freopen("exam.in","r",stdin);
freopen("exam.out","w",stdout);
n=_read();
for (int i=1;i<=n;i++){
int x=_read();
while (x--) s[_read()][i-1]=1;
}
Q=_read();
while(Q--){
int x=_read(),y=_read();
if ((s[x]&s[y]).any()) printf("Yes\n");else printf("No\n");
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: