티스토리 뷰

ps

BOJ 20040(사이클 게임)풀이

KWG07(joseph0528) 2021. 2. 14. 19:45

solved.ac 티어 : 골드 4

www.acmicpc.net/problem/20040

 

20040번: 사이클 게임

사이클 게임은 두 명의 플레이어가 차례대로 돌아가며 진행하는 게임으로, 선 플레이어가 홀수 번째 차례를, 후 플레이어가 짝수 번째 차례를 진행한다. 게임 시작 시 0 부터 n − 1 까지 고유한

www.acmicpc.net

이문제는 설명은 길지만 요약하자면 m개의 줄에 2개의 점이 주어질 때 그 2개의 점이 같은 집합에 속하는 번째수를 출력하는 것이다. 이문제는 유니온 파인드로 풀 수 있다.

import sys
sys.setrecursionlimit(10**9)
input=sys.stdin.readline
n,m=map(int,input().split())
uf=[-1]*(n+1)
def find(a):
    if uf[a]<0:return a
    uf[a]=find(uf[a])
    return uf[a]
def merge(a,b):
    a=find(a)
    b=find(b)
    if a==b:return 0
    uf[b]=a
    return 1
for i in range(m):
    c,d=map(int,input().split())
    if not merge(c,d):
        print(i+1)
        sys.exit()
print(0)

 

 

'ps' 카테고리의 다른 글

BOJ 1944(복제 로봇)풀이  (0) 2021.02.22
BOJ 2482(색상환)풀이  (0) 2021.02.18
BOJ 10942(팰린드롬?)풀이  (0) 2021.02.12
BOJ 16910(mex와 쿼리)풀이  (1) 2021.02.10
BOJ 1348(주차장)풀이  (0) 2021.02.06
댓글