nice 位运算果真是好东西,今天算是学到点啦^_^

pku 2443 前面没用位的时候不是超时就是超内存(96M),用了以后,nice~~
#include <stdio.h>
#include <math.h>
int c[10001][32];

int main()
{
    int n,i,j,tmp,a,b;
   while(scanf("%d",&n)==1)
   { for(i=1; i<=10000; i++)
        for(j=0; j<32; j++)
            c[i][j] = 0;   
    for(i=1; i<=n; i++)
    {
        scanf("%d",&j);
        while(j--)
        {
            scanf("%d",&tmp);
            a = 1<<(i%32);
            if((c[tmp][i/32]&a) == 0)
                c[tmp][i/32] += a;
        }   
    }
    scanf("%d",&n);
    while(n--)
    {
        scanf("%d %d",&a,&b);
        tmp = 0;
        for(i=0; i<32&&tmp==0; i++)
            tmp = c[a][i] & c[b][i];                
        if(tmp!=0)
            printf("Yes\n");
        else
            printf("No\n");        
    }
}          
    return 0;
}  

posted on 2007-10-05 19:15  xmx  阅读(191)  评论(0)    收藏  举报

导航