import sys
sys.setrecursionlimit(10**9) #修改递归深度,防止爆栈
n = int(input())
fa = [i for i in range(10 ** 4 + 10)] #根据编号合并
#朴素并查集
def find(x):
if fa[x] != x:
fa[x] = find(fa[x])
return fa[x]
def merge(a, b):
aa = find(a)
bb = find(b)
if aa != bb:
fa[aa] = bb
st = set() #存储出现过的编号
for _ in range(n):
temp = list(map(int, input().split()))
cnt = temp[0]
temp = temp[1:]
for i in range(cnt):
st.add(temp[i])
merge(temp[0], temp[i])
q = int(input())
size = [0] * (len(st)+10)
res = 0
#获得并查集大小、种类数量
for i in st:
size[find(i)] += 1
if fa[i] == i:
res += 1
print(sum(size),res)
for _ in range(q):
a, b = map(int,input().split())
if find(a) == find(b):
print('Y')
else:
print('N')
10-04
248
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)
10-27
100
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)
11-24
“相关推荐”对你有帮助么?
-
非常没帮助
-
没帮助
-
一般
-
有帮助
-
非常有帮助
提交