#p.298 "이코테" 실전문제 <2> 팀 결성
# 이 부분은 특히 경로압축 기법이 쓰인거니 다시 봐보자 p.275
def find_parent(parent, x):
if parent[x] != x:
parent[x] = find_parent(parent, parent[x])
return parent[x]
def union_parent(parent, a, b):
a = find_parent(parent, a)
b = find_parent(parent, b)
if a < b:
parent[b] = a
else:
parent[a] = b
n, m = map(int, input().split())
parent = [0] * (n + 1)
for i in range(0, n + 1):
parent[i] = i
for i in range(m):
oper, a, b = map(int, input().split())
if oper == 0:
union_parent(parent, a, b)
elif oper == 1:
if find_parent(parent, a) == find_parent(parent, b):
print('YES')
else:
print('NO')
경로압축 기법을 제외 하더라도 시간 복잡도를 줄일 수 있는 방법은 더 있음