본문 바로가기

코딩 이야기/백준 풀이

백준 1717번: 집합의 표현 파이썬 코드(유니온파인드, Union-find)

반응형

https://upload.wikimedia.org/wikipedia/commons/thumb/c/c3/Python-logo-notext.svg/600px-Python-logo-notext.svg.png

import sys

n, m = map(int, sys.stdin.readline().split())

parent = [i for i in range(n+1)]

def find(x):
    if parent[x] == x:
        return x
    return find(parent[x])

def union(x, y):
    x = find(x)
    y = find(y)
    if x != y:
        if y > x:
            parent[y] = x
        else:
            parent[x] = y
    return

def same(x, y):
    x = find(x)
    y = find(y)
    if x == y:
        print("YES")
    else:
        print("NO")
    return

for i in range(m):
    a,b,c = map(int, sys.stdin.readline().split())
    if a == 0:
        union(b,c)
    elif a == 1:
        if b < c:
            same(c, b)
        elif b == c:
            print("YES")
        else:
            same(b, c)

 

푼지 오래되서 기억이 잘 안남...

반응형