Skip to content

Commit 47702ff

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

File tree

1 file changed

+37
-0
lines changed

1 file changed

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

0 commit comments

Comments
 (0)