[Algorithm][Python] 백준(BOJ) 24444 알고리즘 수업 - 너비 우선 탐색1
[문제]
https://www.acmicpc.net/problem/24444
풀이
[내 코드(실패)]
import sys
from collections import deque
def bfs(graph,v):
queue = deque()
visited[v] = 1
queue.append(v)
while queue:
v = queue.popleft()
print(v)
for vertex in graph[v]:
if visited[vertex] == 0:
queue.append(vertex)
visited[vertex] = 1
n, m, r = map(int, input().split())
graph = [[] for _ in range(n+1)]
visited = [0] * (n+1)
for _ in range(m):
u, v = map(int, sys.stdin.readline().split())
graph[u].append(v)
graph[v].append(u)
for i in range(len(graph)):
graph[i].sort()
bfs(graph, r)
for i in range(1, len(visited)):
if visited[i] == 0:
print(0)
문제를 잘못 읽고 방문한 순서대로 출력하라는 줄 알고 popleft한 v 를 바로 출력했다…
문제를 똑바로 읽자…!!
[내 풀이(정답)]
import sys
from collections import deque
def bfs(graph,v):
queue = deque()
order = 1
visited[v] = order
queue.append(v)
while queue:
v = queue.popleft()
for vertex in graph[v]:
if visited[vertex] == 0:
order += 1
queue.append(vertex)
visited[vertex] = order
n, m, r = map(int, input().split())
graph = [[] for _ in range(n+1)]
visited = [0] * (n+1)
for _ in range(m):
u, v = map(int, sys.stdin.readline().split())
graph[u].append(v)
graph[v].append(u)
for i in range(len(graph)):
graph[i].sort()
bfs(graph, r)
for i in range(1, n+1):
print(visited[i])
댓글남기기