Skip to content

Commit 4e29e91

Browse files
committed
[BOJ] #24444. 알고리즘 수업 - 너비 우선 탐색 1 / 실버2 / 23분 / 성공
1 parent 810932a commit 4e29e91

File tree

1 file changed

+39
-0
lines changed

1 file changed

+39
-0
lines changed
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
import sys
2+
from collections import deque
3+
4+
input = sys.stdin.readline
5+
6+
# BFS 함수
7+
def bfs(v, graph, visited):
8+
order = 1
9+
# 큐
10+
queue = deque([v])
11+
12+
while queue: # 큐가 빌 때까지 반복
13+
# 큐에서 원소를 하나 뽑아 출력한다.
14+
node = queue.popleft()
15+
if visited[node] == 0:
16+
visited[node] = order # 방문하면 순서 넣기
17+
order += 1 # 다음 순서로 넘어가기
18+
19+
for u in sorted(graph[node]): # 오름차순 인접노드 방문하기 위해 정렬
20+
if visited[u] == 0: # 방문 안 한 노드면 bfs 탐색
21+
queue.append(u)
22+
23+
# 초기화
24+
n, m, r = map(int, input().strip().split()) # n: 정점의 수, m: 간선의 수, r: 시작 정점
25+
graph = [[] for _ in range(n+1)]
26+
visited = [0] * (n+1)
27+
order = 1
28+
29+
# 그래프 연결
30+
for _ in range(m):
31+
u, v = map(int, input().strip().split())
32+
graph[u].append(v)
33+
graph[v].append(u)
34+
35+
bfs(r, graph, visited)
36+
37+
# 해당노드를 몇 번째로 방문했는지 출력
38+
for i in range(1, len(visited)):
39+
print(visited[i])

0 commit comments

Comments
 (0)