[알고리즘] 백준 1717 집합의 표현

CHOI IN HO·2024년 4월 1일
0

코딩테스트

목록 보기
68/74

풀이

union, find 함수를 이용해 연결된 부모 찾기를 통해 풀어주었다. 그러나 RecrusionErrorr가 떴는데 재귀 깊이 제한을 풀어주어야한다고 한다.

import sys
sys.setrecursionlimit(1000000)

import sys
sys.setrecursionlimit(1000000) # 재귀 깊이 제한 늘리기
input = sys.stdin.readline

n, m = map(int, input().split())
parent = [i for i in range(n + 1)] # 자기 자신을 부모로 갖는 n + 1개 집합

# 찾기 연산(같은 집합에 속하는지 확인하기 위한 함수)
def find_parent(x):
    if parent[x] != x:
        parent[x] = find_parent(parent[x])
    return parent[x]

# 합집합 연산(두 집합을 합치기 위한 함수)
def union_parent(a, b):
    a = find_parent(a)
    b = find_parent(b)
    if a < b: # 값이 더 작은 쪽을 부모로
        parent[b] = a
    else:
        parent[a] = b
        
for _ in range(m):
    opr, a, b = map(int, input().split())
    if opr == 0:
        union_parent(a, b)
    else:
        if find_parent(a) == find_parent(b):
            print("YES")
        else:
            print("NO")
profile
개발자기 되기 위해선 무엇이든!

0개의 댓글