码迷,mamicode.com
首页 > 其他好文 > 详细

[POJ 2443] Set Operation (bitset)

时间:2014-12-13 00:45:13      阅读:163      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   io   ar   color   os   sp   for   

题目链接:http://poj.org/problem?id=2443

题目大意:给你N个集合,每个集合里有若干个数。M个查询,每个查询有a,b两个数。问是否存在一个集合同时包含a,b这两个数。若存在则输出Yes,否则为No。

 

康神竟然一下子就想出来了。。

思路:统计每个数在哪个集合出现过,用bitset记录下来。然后对于a,b,则把两个bitset取与。

如果得到空集就是No,否则就是Yes。

 

 1 #include <cstdio>
 2 #include <bitset>
 3 #include <algorithm>
 4 #include <cstdlib>
 5 #include <iostream>
 6 
 7 using namespace std;
 8 
 9 const int MAX_N = 222222;
10 int N;
11 bitset<1111> bs[MAX_N];
12 
13 int main(){
14     while(scanf("%d",&N)!=EOF){
15         for(int i=0;i<MAX_N;i++) bs[i].reset();
16         for(int i=0;i<N;i++){
17             int a,an;
18             scanf("%d",&an);
19             while( an-- ){
20                 scanf("%d",&a);
21                 bs[a].set(i);
22             }
23         }
24         int M;
25         scanf("%d",&M);
26         while(M--){
27             int a,b;
28             scanf("%d%d",&a,&b);
29             bitset<1111> t = bs[a]&bs[b];
30             if( t.count() ){
31                 puts("Yes");
32             } else {
33                 puts("No");
34             }
35         }
36     }
37 
38     return 0;
39 }

 

[POJ 2443] Set Operation (bitset)

标签:style   blog   http   io   ar   color   os   sp   for   

原文地址:http://www.cnblogs.com/llkpersonal/p/4160685.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!