这题为什么能用递归而上一题却不能呢,上一题数据量太大?
n,m=map(int,input().split())
p=list(range(0,n+1))
size=[1]*(n+1)
def find(x):
if x != p[x]:
p[x] = find(p[x])
return p[x]
def main():
for _ in range(m):
ins=list(input().split(" "))
if ins[0]=='C':
a=int(ins[1])
b=int(ins[2])
if find(a)==find(b):#如果是在同一个连通块的两个数据连线的话就不再连线进入下一个循环
continue
size[find(b)]+=size[find(a)]
p[find(a)]=find(b)#这两句话上下顺序不能反
elif ins[0]=='Q1':#这里如果ab相等不用特判,因为相等时也能正确返回yes
a=int(ins[1])
b=int(ins[2])
if find(a)==find(b):
print("Yes")
else:
print("No")
else:
a=int(ins[1])
print(size[find(a)])
main()