#P2443. Set Operation

    ID: 1444 传统题 文件IO:poj 1000ms 256MiB 尝试: 6 已通过: 1 难度: 10 上传者: 标签>其他位运算POJ MonthlyMinkerui

Set Operation

题目描述

给定NN个集合,第11个集合(由S(i)S(i)代表)具有C(i)C(i)元素(这里的set“set”与数学中定义的“集合”不完全相同,并且集合可能包含两个相同的元素)。集合中的每个元素都由111000010000的正数表示。现在有一些问题需要回答。查询是确定两个给定元素i和j是否同时属于至少一个集合。在另一个词中,你应该确定是否存在一个数字 k(1<=k<=N)k(1 <= k <= N),这样元素 ii 属于 S(k)S(k),元素 j 也属于 S(k)S(k)

输入

第一行输入包含一个整数N(1<=N<=1000)N(1 <= N <= 1000),表示集合量。然后按照N线。每个以数字C(i)(1<=C(i)<=100,000)C(i)(1 <= C(i)<= 100,000)开始,然后用空格分隔的C(i)数字跟随给出集合中的元素(这些C(iC(i)数字彼此之间不必不同)。N+2N + 2 行包含一个数字 Q(1<=Q<=200000)Q (1 <= Q <= 200000),表示查询数。然后按照Q线。每个包含一对数字iij(1<=i,j<=10000j(1 <= i,j <= 10000,我可能等于jj),它描述需要回答的元素。

输出

对于每个查询,在一行中,如果存在这样的数字 k,请打印“是”;否则打印“否”。 输入数 1

3
3 1 2 3
3 1 2 5
1 10
4
1 3
1 5
3 5
1 10

输出数位 1

Yes
Yes
No
No

提示

输入可能很大,C ++语言的I/O函数(cin/cout)对于这个问题可能有点太慢了。 来源

POJ 月刊, Minkerui