Skip to content

Commit 58ed80b

Browse files
committed
백준 1260번 DFS와 BFS
문제 링크: https://www.acmicpc.net/problem/1260
1 parent 173b26d commit 58ed80b

File tree

8 files changed

+104
-0
lines changed

8 files changed

+104
-0
lines changed

백준 1260번 DFS와 BFS/main.py

+55
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
import sys
2+
from typing import List
3+
4+
5+
class Vertex:
6+
def __init__(self, v):
7+
self.v = v
8+
self.adjacent: List[int] = []
9+
10+
11+
def solve():
12+
N, M, V = map(int, sys.stdin.readline().strip().split(' '))
13+
vertexes: List[Vertex] = [Vertex(n) for n in range(N + 1)]
14+
15+
for _ in range(M):
16+
fr, to = map(int, sys.stdin.readline().strip().split(' '))
17+
vertexes[fr].adjacent.append(to)
18+
vertexes[to].adjacent.append(fr)
19+
20+
for vertex in vertexes:
21+
vertex.adjacent.sort()
22+
23+
answer: List[int] = []
24+
answer.append(V)
25+
dfs(V, vertexes, answer)
26+
answer = map(str, answer)
27+
print(' '.join(answer))
28+
29+
answer: List[int] = []
30+
bfs(V, vertexes, answer)
31+
answer = map(str, answer)
32+
print(' '.join(answer))
33+
34+
35+
def dfs(V, vertexes, answer):
36+
for v in vertexes[V].adjacent:
37+
if v not in answer:
38+
answer.append(v)
39+
dfs(v, vertexes, answer)
40+
41+
42+
def bfs(V, vertexes, answer):
43+
queue: List[int] = [V]
44+
answer.append(V)
45+
46+
while queue:
47+
V = queue.pop(0)
48+
for v in vertexes[V].adjacent:
49+
if v not in answer:
50+
answer.append(v)
51+
queue.append(v)
52+
53+
54+
if __name__ == '__main__':
55+
solve()

백준 1260번 DFS와 BFS/test1.txt

+6
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
4 5 1
2+
1 2
3+
1 3
4+
1 4
5+
2 4
6+
3 4
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
1 2 4 3
2+
1 2 3 4

백준 1260번 DFS와 BFS/test2.txt

+6
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
5 5 3
2+
5 4
3+
5 2
4+
1 2
5+
3 4
6+
3 1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
3 1 2 5 4
2+
3 1 4 2 5

백준 1260번 DFS와 BFS/test3.txt

+2
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
1000 1 1000
2+
999 1000
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
1000 999
2+
1000 999
+29
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
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')
27+
28+
def test3_solve(self):
29+
self.test_solve('3')

0 commit comments

Comments
 (0)