t_팀결성_298

source github.com/ndb796/python-for-coding-test
type 📌 개발노트
topics 600-알고리즘 & 코딩테스트 609 유니온파인드
types 문제풀이

문제

학생들에게 0부터 n까지 번호를 부여함
모든학생은 처음에는 서로다른팀
두가지 연산만 가능함. 팀합치기 & 같은팀 여부확인
if 같은팀 여부확인 연산일때 결과들을 출력함
연산 a학생 b학생 0:합치기 1:같은팀여부확인

걍 문제부터 유니온파인드 쓰라고 적혀져있는 문제라 방법은 딱히 고민하지 않아도된다.

input = input.strip().split('\n')
n,m = map(int, input[0].split())

parents = [0] * (n+1)
for i in range(n+1):
    parents[i] = i

def find_parent(parents,x):
    if parents[x] != x:
        parents[x] = find_parent(parents,parents[x])
    return parents[x]

arr = []
for i in range(1, m+1):
    f,a,b = map(int,input[i].split())
    pa = find_parent(parents,a)
    pb = find_parent(parents,b)
            
    if f == 0:
        if pa < pb:
            parents[pb] = pa
        else:
            parents[pa] = pb
    else:
        if pa != pb:
            print("NO")
        else:
            print("YES")