π λ¬Έμ
n+1κ°μ μ§ν©Β {0},{1},{2}, . . . , {n}μ΄ μλ€. μ¬κΈ°μ ν©μ§ν© μ°μ°κ³Ό, λ μμκ° κ°μ μ§ν©μ ν¬ν¨λμ΄ μλμ§λ₯Ό νμΈνλ μ°μ°μ μννλ €κ³ νλ€.n, mμ΄ μ£Όμ΄μ§λ€.Β mμ μ
λ ₯μΌλ‘ μ£Όμ΄μ§λ μ°μ°μ κ°μμ΄λ€.mκ°μ μ€μλ κ°κ°μ μ°μ°μ΄ μ£Όμ΄μ§λ€.0Β aΒ bμ ννλ‘ μ
λ ₯μ΄ μ£Όμ΄μ§λ€.aκ° ν¬ν¨λμ΄ μλ μ§ν©κ³Ό,Β bκ° ν¬ν¨λμ΄ μλ μ§ν©μ ν©μΉλ€λ μλ―Έμ΄λ€.1Β aΒ bμ ννλ‘ μ
λ ₯μ΄ μ£Όμ΄μ§λ€.aμΒ bκ° κ°μ μ§ν©μ ν¬ν¨λμ΄ μλμ§λ₯Ό νμΈνλ μ°μ°μ΄λ€.1λ‘ μμνλ μ
λ ₯μ λν΄μ a, bκ° κ°μ μ§ν©μ ν¬ν¨λμ΄μμΌλ©΄ βYesβ λλ βyesβλ₯Ό, κ·Έλ μ§ μμΌλ©΄ βNOβ λλ βnoβλ₯Ό νλμ© μΆλ ₯νλ€.
π‘μ λμ¨νμΈλ


π§βπ» μ½λ νμ΄
def find_parent(parent, x):
if parent[x] != x:
parent[x] = find_parent(parent, parent[x])
return parent[x]
def union_parent(parent, x, y):
a = find_parent(parent, x)
b = find_parent(parent, y)
if a < b:
parent[b] = a
else:
parent[a] = b
def solution(n, m):
parent = [i for i in range(n + 1)]
for i in range(m):
flag, x, y = map(int, sys.stdin.readline().split())
if flag == 0:
union_parent(parent, x, y)
else:
if find_parent(parent, x) == find_parent(parent, y):
print('yes')
else:
print('no')
union-find λ₯Ό μ΄μ©ν΄ λΆλͺ¨κ° λμΌνλ€λ©΄ yesλ₯Ό μΆλ ₯ν©λλ€.noλ₯Ό μΆλ ₯ν©λλ€.