Skip to content

Commit af7bddc

Browse files
committed
[BOJ] #1260. DFS와 BFS / 실버2 / 30분 / 힌트사용 -> 성공
1 parent 81708b6 commit af7bddc

File tree

1 file changed

+41
-0
lines changed

1 file changed

+41
-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+
from collections import deque
3+
sys.setrecursionlimit(10**5) # 최대 재귀한도 깊이
4+
input = sys.stdin.readline
5+
6+
# dfs 함수 정의
7+
def dfs(start):
8+
print(start, end=' ') # 해당 값을 출력한다.
9+
dfs_visited[start] = 1 # 해당 값을 방문처리한다.
10+
for u in sorted(graph[start]): # 해당 값과 연결되어 있고, 방문하지 않았다면 재귀 탐색한다.
11+
if not dfs_visited[u]:
12+
dfs(u)
13+
14+
# bfs 함수 정의
15+
def bfs(start):
16+
queue = deque([start])
17+
18+
while queue: # 큐가 빌 때까지 계속 반복
19+
u = queue.popleft() # 첫번째 값을 꺼낸다.
20+
if not bfs_visited[u]: # 해당 값을 방문하지 않았다면
21+
print(u, end=' ') # 값을 출력한다.
22+
bfs_visited[u] = 1 # 방문 표시를 해준다.
23+
for v in sorted(graph[u]): # 해당 값과 연결되어 있고, 방문하지 않았다면 큐에 추가한다.
24+
if not bfs_visited[v]:
25+
queue.append(v)
26+
27+
# 정점, 간선, 시작할 정점 초기화
28+
n, m, v = map(int, input().strip().split()) # n: 정점 개수 / m: 간선 개수 / v: 시작 번호
29+
dfs_visited = [0] * (n + 1) # DFS 방문 기록
30+
bfs_visited = [0] * (n + 1) # BFS 방문 기록
31+
graph = [[] for _ in range(n + 1)] # 그래프 초기화
32+
33+
# 그래프 연결
34+
for _ in range(m):
35+
a, b = map(int, input().strip().split())
36+
graph[a].append(b)
37+
graph[b].append(a)
38+
39+
dfs(v) # DFS 함수 호출
40+
print() # 줄바꿈
41+
bfs(v) # BFS 함수 호출

0 commit comments

Comments
 (0)