유니온파인드를 이용!!
import sys
def find(x):
if home[x] < 0:
return x
home[x] = find(home[x])
return home[x]
def union(a, b, idx):
a, b = find(a), find(b)
# 사이클을 찾는다면 해당 인덱스를 출력하고 종료
if a == b:
print(idx)
sys.exit(0)
if home[a] < home[b]:
home[a] += home[b]
home[b] = a
else:
home[b] += home[a]
home[a] = b
n, m = map(int, sys.stdin.readline().split())
home = [-1] * n
for i in range(1, m+1):
a, b = map(int, sys.stdin.readline().split())
union(a, b, i)
print(0)
'파이썬 코테 준비' 카테고리의 다른 글
[백준 1197] 최소 스패닝 트리 - Python(파이썬) (0) | 2021.03.21 |
---|---|
[백준 9372] 상근이의 여행 - Python(파이썬) (0) | 2021.03.21 |
[백준 1717] 집합의 표현 - Python(파이썬) (0) | 2021.03.11 |
[백준 6549] 히스토그램에서 가장 큰 직사각형 - Python(파이썬) (0) | 2021.03.11 |
[백준 11657] 타임머신 - Python(파이썬) (0) | 2021.03.11 |
댓글