백준 20040 - 사이클 게임 (파이썬)
Updated:
입력되는 점들마다 find연산을 해서 부모가 같은지 확인해서 해결했습니다.
입력된 두개의 점들의 부모가 같다면 이미 연결되어 있는 상태이므로 사이클이 발생합니다.
import sys
sys.setrecursionlimit(10 ** 9)
input = sys.stdin.readline
def find(x):
if parent[x] != x:
parent[x] = find(parent[x])
return parent[x]
def union(x, y):
global flag
x = find(x)
y = find(y)
if x > y:
parent[y] = x
elif x < y:
parent[x] = y
else:
flag = True
n, m = map(int, input().split())
parent = [i for i in range(n)]
flag = False
for i in range(1, m + 1):
a, b = map(int, input().split())
union(a, b)
if flag:
print(i)
break
if not flag:
print(0)