
http://poj.org/problem?id=2443
学习一下Bitset
AC代码:
#include <bitset>
#include <cstdio>
#include <iostream>
#include <algorithm>
using namespace std;
const int maxn = 10000 + 5;
bitset<maxn> a[maxn];
int N, Q;
int x, y;
int m, p;
int main() {
//清零
//for(int i = 0; i < maxn; i++) a[i].reset();
scanf("%d",&N);
for(int i = 1; i <= N; i++) {
scanf("%d",&m);
for(int j = 1; j <= m; j++) {
scanf("%d",&p);
a[p].set(i);
}
}
scanf("%d",&Q);
while(Q--) {
scanf("%d%d",&x,&y);
int flag = 0;
if((a[x] & a[y]).any()) flag = 1;
if(flag) printf("Yes\n");
else printf("No\n");
}
return 0;
}
本文介绍了一种使用Bitset解决POJ2443题目(查询两个集合是否有交集)的方法。通过实例代码,展示了如何利用Bitset的高效位操作来快速判断两个集合是否相交,特别适用于大规模数据处理场景。

852

被折叠的 条评论
为什么被折叠?



