💡 Codeing Test/백준

백준) 1717번_집합의 표현 (python)

밈98 2023. 5. 22. 20:55

https://www.acmicpc.net/problem/1717

 

1717번: 집합의 표현

초기에 $n+1$개의 집합 $\{0\}, \{1\}, \{2\}, \dots , \{n\}$이 있다. 여기에 합집합 연산과, 두 원소가 같은 집합에 포함되어 있는지를 확인하는 연산을 수행하려고 한다. 집합을 표현하는 프로그램을 작

www.acmicpc.net

나의 풀이
import sys
sys.setrecursionlimit(100000)
input = sys.stdin.readline

n,m = map(int, input().split())
arr = [i for i in range(n+1)]

def find(a):
    if a == arr[a]:
        return a
    arr[a] = find(arr[a])
    return arr[a]

def union(a,b):
    pa = find(a)
    pb = find(b)
    arr[pa] = pb


for _ in range(m):
    num, a,b = map(int, input().split())
    if num == 0 :
        union(a,b)
    elif num == 1:
        if find(a) == find(b):
            print("YES")
        else:
            print("NO")
  • Union - find 알고리즘 사용
  • 1 <= n <=1,000,000
  • 1<=m<=100,000
  • 수가 커서 sys.setrecursionlimit(100000)으로 제한해준다!