Skip to content

Commit

Permalink
백준 20040번 사이클 게임 v2
Browse files Browse the repository at this point in the history
  • Loading branch information
skysign committed Jan 19, 2025
1 parent ef6de39 commit bd1bd26
Show file tree
Hide file tree
Showing 6 changed files with 81 additions and 0 deletions.
41 changes: 41 additions & 0 deletions 백준 20040번 사이클 게임 v2/main.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
import sys


def solve():
input = sys.stdin.readline
N, M = map(int, input().strip().split())

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

for m in range(1, M + 1):
e1, e2 = map(int, input().strip().split())
e1, e2 = min(e1, e2), max(e1, e2)

r1 = find(vertexes, e1)
r2 = find(vertexes, e2)

if r1 == r2:
print(m)
return
else:
union(vertexes, min(r1, r2), max(r1, r2))

print(0)

def union(vertexes, r1, r2):
vertexes[r2] = r1


def find(vertexes, node):
parent = vertexes[node]

if parent == node:
return parent

vertexes[parent] = find(vertexes, parent)

return vertexes[parent]


if __name__ == '__main__':
solve()
6 changes: 6 additions & 0 deletions 백준 20040번 사이클 게임 v2/test1.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
6 5
0 1
1 2
2 3
5 4
0 4
1 change: 1 addition & 0 deletions 백준 20040번 사이클 게임 v2/test1_answer.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
0
6 changes: 6 additions & 0 deletions 백준 20040번 사이클 게임 v2/test2.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
6 5
0 1
1 2
1 3
0 3
4 5
1 change: 1 addition & 0 deletions 백준 20040번 사이클 게임 v2/test2_answer.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
4
26 changes: 26 additions & 0 deletions 백준 20040번 사이클 게임 v2/test_main.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
import sys
from pathlib import Path
from unittest import TestCase
from main import solve


class Test(TestCase):
def my_solve(self, testcase_input):
sys.stdin = open(testcase_input, 'r')
stdout = sys.stdout
sys.stdout = open('stdout.txt', 'w')
solve()
sys.stdout.close()
sys.stdout = stdout

def test_solve(self, testcase_number: str):
self.my_solve('test' + testcase_number + '.txt')
self.assertEqual(
Path('test' + testcase_number + '_answer.txt').read_text().strip(),
Path('stdout.txt').read_text().strip())

def test1_solve(self):
self.test_solve('1')

def test2_solve(self):
self.test_solve('2')

0 comments on commit bd1bd26

Please sign in to comment.