[Beakjoon] 20040. 사이클 게임

2025. 1. 3. 17:53·코딩테스트/Python
728x90
반응형

🔗 Problem Link

https://www.acmicpc.net/problem/20040


❔Thinking

  • 방향이 없는 그래프에서 사이클이 형성되었는지 확인하고, 그 순간을 출력한다.
  • 사이클이 없다면 0을 출력한다.

💻Solution

import sys
input = sys.stdin.readline

N, M = map(int, input().split())

roots = [i for i in range(N)]

def find_root(x):
    if x != roots[x]:
        roots[x] = find_root(roots[x])
    return roots[x]

def union(a, b, roots):
    a = find_root(a)
    b = find_root(b)
    roots[max(a,b)] = min(a,b)

result = 0
for i in range(1, M+1):
    x, y = map(int, input().split())
    if find_root(x) != find_root(y):
        union(x,y,roots)
    elif result == 0:
        result = i        
print(result)

🗝️keypoint

  1. 유니온 파인드를 활용해 사이클 여부를 확인하는 방법은, 새로운 두 노드의 루트가 같은지 확인하는 방법이다.
저작자표시 (새창열림)

'코딩테스트 > Python' 카테고리의 다른 글

[Programmers] Level 2. 퍼즐 게임  (0) 2025.01.06
[Programmers] Level 2. 디펜스 게임  (0) 2025.01.06
[Beakjoon] 1213. 펠린드롬 만들기  (0) 2025.01.02
99클럽 코테 스터디 0일차 TIL (floyd-warshall)  (0) 2024.10.28
[Baekjoon] 25192. 인사성 밝은 곰곰이  (0) 2024.06.11
'코딩테스트/Python' 카테고리의 다른 글
  • [Programmers] Level 2. 퍼즐 게임
  • [Programmers] Level 2. 디펜스 게임
  • [Beakjoon] 1213. 펠린드롬 만들기
  • 99클럽 코테 스터디 0일차 TIL (floyd-warshall)
swwho
swwho
일상을 데이터화하다
  • swwho
    하루한장
    swwho
  • 전체
    오늘
    어제
    • 분류 전체보기 (188)
      • ML_DL (39)
        • MUJAKJUNG (무작정 시리즈) (18)
        • 딥러닝 공부하기 (21)
      • 데이터사이언스 (1)
        • EDA (1)
        • 데이터과학을 위한 통계 (0)
      • 데이터엔지니어링 (2)
      • 논문리뷰 (2)
        • Computer Vision (2)
      • Python 활용하기 (12)
      • 코딩테스트 (127)
        • Python (109)
        • MySQL (14)
      • Git (3)
      • MySQL 활용하기 (0)
      • 일상 이야기 (1)
  • 블로그 메뉴

    • 홈
    • 태그
  • 최근 글

  • 250x250
  • hELLO· Designed By정상우.v4.10.3
swwho
[Beakjoon] 20040. 사이클 게임
상단으로

티스토리툴바