[bitset] POJ 2443——Set Operation

来源:互联网 发布:几个程序员去吃饭 编辑:程序博客网 时间:2024/06/06 01:53

题目传送门

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

题目概述

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

解题思路

读入的时候标记一下,然后并起来判断有没有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;}
原创粉丝点击