https://www.acmicpc.net/problem/20040
20040번: 사이클 게임
사이클 게임은 두 명의 플레이어가 차례대로 돌아가며 진행하는 게임으로, 선 플레이어가 홀수 번째 차례를, 후 플레이어가 짝수 번째 차례를 진행한다. 게임 시작 시 0 부터 n − 1 까지 고유한
www.acmicpc.net
문제 접근
운이 좋았나... 바로 union & find가 떠올랐다.
이었을때 두 점이 둘다 같은 부모를 가르킨다면 사이클이 돌고있다는 뜻.
그때를 출력하면된다
코드는 생각나는대로 쭉 썼는데 시간도 여유롭게 통과됐다
코드
import sys
input = sys.stdin.readline
"""
"""
def find(x):
if parent[x] != x:
parent[x] = find(parent[x])
return parent[x]
return x
def union(a,b):
x = find(a)
y = find(b)
if x==y:
return 0
elif x<y:
parent[y] = x
else:
parent[x] = y
return 1
n, m = map(int,input().split())
parent = [i for i in range(n)]
for i in range(m):
x, y = map(int,input().split())
a = union(x,y)
if a==0:
print(i+1)
break;
else:
print(0)
줄이려면 줄일 요소가 많은듯
'백준 > 문제풀이_python,C++' 카테고리의 다른 글
1449 수리공 항승 python, C++ (0) | 2023.04.19 |
---|---|
4803 트리 python, c++ (0) | 2023.04.17 |
25192 인사성 밝은 곰곰이 (0) | 2023.04.16 |
18917 수열과 쿼리 38 _python, c++ (0) | 2023.04.12 |
10174 팰린드롬 python, c++ (0) | 2023.04.11 |
댓글