本来以为sort一下然后二分就行,不是一个sb题嘛。。为什么要用bitset。。
T掉了。
然而bitset也是卡着时间296*MS(时间限制3000MS),肯定还是有什么奇技淫巧我不会
这题,感觉看了bitset都会做吧,,
1 #include<cstdio> 2 #include<algorithm> 3 #include<bitset> 4 #define N 1000005 5 using namespace std; 6 inline int ra() 7 { 8 int x=0,f=1; char ch=getchar(); 9 while (ch<'0' || ch>'9') {if (ch=='-') f=-1; ch=getchar();} 10 while (ch>='0' && ch<='9') {x=x*10+ch-'0'; ch=getchar();} 11 return x*f; 12 } 13 int n,c[1005]; 14 /*bool find(int i, int x) 15 { 16 int l=1,r=c[i]; 17 while (l<r) 18 { 19 int mid=l+r>>1; 20 if (a[i][mid]==x) return 1; 21 else if (a[i][mid]>x) r=mid-1; 22 else l=mid+1; 23 } 24 return a[i][l]==x; 25 }*/ 26 bitset< 10005 > a[1005]; 27 int main() 28 { 29 n=ra(); 30 for (int i=1; i<=n; i++) 31 { 32 c[i]=ra(); 33 for (int j=1; j<=c[i]; j++) a[i][ra()]=1; 34 } 35 int Q=ra(); 36 while (Q--) 37 { 38 bool flag=0; 39 int x=ra(),y=ra(); 40 for (int i=1; i<=n; i++) 41 { 42 if (a[i][x] && a[i][y]) 43 { 44 printf("Yes "); 45 flag=1; 46 break; 47 } 48 } 49 if (!flag) puts("No"); 50 } 51 return 0; 52 }