알고리즘/백준

유니온파인드를 이용한 사이클 판별

cha_eyoon 2024. 1. 26. 12:02
import sys
input = sys.stdin.readline
sys.setrecursionlimit(10**6)

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

v, e = map(int, input().split())

parent = [i for i in range(v+1)]
cycle = False

for i in range(e):
    a, b = map(int, input().split())
    if find_parent(a) == find_parent(b):
        cycle = True
        break
    else:
        union_parent(a, b)

if cycle:
    print("사이클 발생o")
else:
    print("사이클 발생x")