practivceAlgorithm/백준

[백준][Python] 1717 : 집합의표현

findTheValue 2021. 7. 10. 16:56

시간초과 및 메모리초과 때문에 10트정도 했다.

원소를 1개씩 가지고 있는 집합들을 합치고 어떤 원소가 이미 같은 집합으로 합쳐져있는지 확인하는

Union-Find구현문제이다.

import sys
input = sys.stdin.readline
sys.setrecursionlimit(100000)

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

def Union(a,b):
    a = Find(a)
    b = Find(b)

    if a>b:
        parent[a] = b
    else:
        parent[b] = a

def Find(u):
    if parent[u]==u:
        return u
    parent[u] = Find(parent[u])
    return parent[u]



for _ in range(m):
    flag, x, y = map(int,input().split())

    if flag:
        if Find(x) == Find(y):
            print("YES")
        else:
            print("NO")
    else:
        Union(x,y)

재귀 사용시 런타임에러, 시간초과, 메모리초과 나면

import sys
input = sys.stdin.readline
sys.setrecursionlimit(100000)

무조건 넣어보기... 코드는 1트했는데 저거때매 삽질함.