프로그래밍/알고리즘

[Python] 백준 24445번 - 알고리즘 수업 - 너비 우선 탐색 2

고등어찌짐 2022. 7. 8. 20:42
from collections import deque
def bfs(graph, visited, start):
  q = deque([start])
  visited[start] = 1
  order = 2

  while q:
    next = q.popleft()
    for n_idx in graph[next]:
      if visited[n_idx] == 0 :
          q.append(n_idx)
          visited[n_idx] = order
          order += 1


if __name__ == '__main__':
  n, m, r = map(int, input().split())
  graph = [[] for _ in range(n+1)]
  visited = [0] * (n+1)

  for _ in range(m):
    a, b = map(int, input().split())
    graph[a].append(b)
    graph[b].append(a)

  for i in range(n+1):
    graph[i].sort()
    graph[i].reverse()
  
  bfs(graph, visited, r)
  for v in visited[1:]:
    print(v)