컴공생의 다이어리
[파이썬, Python] 백준 20040번 : 사이클 게임 본문
백준 20040번 : 사이클 게임
내 코드
import sys
def find_parent(parent, x):
if x != parent[x]:
parent[x] = find_parent(parent, parent[x])
return parent[x]
def union(parent, a, b):
a = find_parent(parent, a)
b = find_parent(parent, b)
if a < b:
parent[b] = a
else:
parent[a] = b
input = sys.stdin.readline
n, m = map(int, input().split()) # n : 점의 개수, m : 진행된 차례의 수
parent = list(range(n))
for i in range(m):
x, y = map(int, input().split())
if find_parent(parent, x) == find_parent(parent, y): # 사이클 발생시
print(i + 1)
exit(0)
union(parent, x, y) # 점 잇기
else: # m번의 차례를 모두 처리한 이후에도 종료되지 않았다면
print(0)
728x90
반응형
'Development > Algorithm & Coding Test' 카테고리의 다른 글
[프로그래머스] 같은 숫자는 싫어 - 파이썬(Python) (0) | 2022.07.26 |
---|---|
[파이썬, Python] 백준 10986번 : 나머지 합 (0) | 2022.07.24 |
[파이썬, Python] 백준 1916번 : 최소비용 구하기 (0) | 2022.07.20 |
[파이썬, Python] 백준 9421번 : 소수상근수 (0) | 2022.07.19 |
[프로그래머스] 양궁대회 - 파이썬(Python) (0) | 2022.07.18 |
Comments