首页 > 代码库 > hdu 5036 Explosion

hdu 5036 Explosion

学了下bitset

#include <iostream>#include <bitset>#include <cstdio>using namespace std;const int N=1005;bitset<N>a[N];int t,n,cas=1,c;int main(){    cin>>t;    while(t--){        scanf("%d",&n);        for(int i=0;i<n;i++){            a[i].reset();            a[i][i]=1;        }        for(int i=0;i<n;i++){            scanf("%d",&c);            while(c--){                int x;                scanf("%d",&x);                x--;                a[i][x]=true;            }        }        for(int i=0;i<n;i++)        for(int j=0;j<n;j++)        if(a[j][i])a[j]|=a[i];        double ans=0;        for(int i=0;i<n;i++){            c=0;            for(int j=0;j<n;j++)if(a[j][i])c++;            ans+=1.0/c;        }        printf("Case #%d: %.5f\n",cas++,ans);    }    return 0;}

hdu 5036 Explosion