Skip to content

Commit bd1bd26

Browse files
committed
백준 20040번 사이클 게임 v2
문제 링크: https://www.acmicpc.net/problem/20040
1 parent ef6de39 commit bd1bd26

File tree

6 files changed

+81
-0
lines changed

6 files changed

+81
-0
lines changed
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
import sys
2+
3+
4+
def solve():
5+
input = sys.stdin.readline
6+
N, M = map(int, input().strip().split())
7+
8+
vertexes = [i for i in range(N)]
9+
10+
for m in range(1, M + 1):
11+
e1, e2 = map(int, input().strip().split())
12+
e1, e2 = min(e1, e2), max(e1, e2)
13+
14+
r1 = find(vertexes, e1)
15+
r2 = find(vertexes, e2)
16+
17+
if r1 == r2:
18+
print(m)
19+
return
20+
else:
21+
union(vertexes, min(r1, r2), max(r1, r2))
22+
23+
print(0)
24+
25+
def union(vertexes, r1, r2):
26+
vertexes[r2] = r1
27+
28+
29+
def find(vertexes, node):
30+
parent = vertexes[node]
31+
32+
if parent == node:
33+
return parent
34+
35+
vertexes[parent] = find(vertexes, parent)
36+
37+
return vertexes[parent]
38+
39+
40+
if __name__ == '__main__':
41+
solve()
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
6 5
2+
0 1
3+
1 2
4+
2 3
5+
5 4
6+
0 4
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
0
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
6 5
2+
0 1
3+
1 2
4+
1 3
5+
0 3
6+
4 5
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
4
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
import sys
2+
from pathlib import Path
3+
from unittest import TestCase
4+
from main import solve
5+
6+
7+
class Test(TestCase):
8+
def my_solve(self, testcase_input):
9+
sys.stdin = open(testcase_input, 'r')
10+
stdout = sys.stdout
11+
sys.stdout = open('stdout.txt', 'w')
12+
solve()
13+
sys.stdout.close()
14+
sys.stdout = stdout
15+
16+
def test_solve(self, testcase_number: str):
17+
self.my_solve('test' + testcase_number + '.txt')
18+
self.assertEqual(
19+
Path('test' + testcase_number + '_answer.txt').read_text().strip(),
20+
Path('stdout.txt').read_text().strip())
21+
22+
def test1_solve(self):
23+
self.test_solve('1')
24+
25+
def test2_solve(self):
26+
self.test_solve('2')

0 commit comments

Comments
 (0)