AcWing 1608. 森林里的鸟
原题链接
简单
作者:
柠檬茶去冰
,
2024-12-14 15:48:22
,
所有人可见
,
阅读 1
import sys
def find(x):
if p[x]!=x:
p[x]=find(p[x])
return p[x]
n=int(sys.stdin.readline())
p=[i for i in range(10001)]
res=0
tree=0
max_=0 #优化查找有多少棵树
for _ in range(n):
a=list(map(int,sys.stdin.readline().strip().split()))
b,a=a[0],a[1:]
max_=max(max_,max(a))
for i in range(1,len(a)):
if find(a[i-1])!=find(a[i]):
p[find(a[i])]=find(a[i-1])
res+=1
for i in range(1,max_+1):
if p[i]==i:
tree+=1
q=int(sys.stdin.readline())
print(tree,tree+res)
for i in range(q):
a,b=map(int,sys.stdin.readline().strip().split())
if find(a)==find(b):
print('Yes')
else:
print('No')