PS/BOJ

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

s_omi 2024. 8. 27. 10:31
728x90
반응형
SMALL

✏️ 문제

 

문제 파악

예전 트리 부모 찾기  문제랑 비슷한 맥락이다.

인접리스트를 사용해서 풀었고 BFS를 활용했다. 

 

개수가 아닌 순서이므로 들렸으면 +1 씩 해줘야 한다. 그래서 인접리스트의 한 배열을 방문한 후에 순서를 +1 하도록 코드를 짰다.

그리고 문제에서 내림차순으로 방문한다고 했으므로 인접리스트의 한 배열을 방문하기 전에 인접리스트를 내림차순하고 돌아가도록 코드를 구성했다.

 

알고리즘

  • 그래프 이론
  • 그래프 탐색
  • 너비 우선 탐색
  • 정렬

 

 

코드

from collections import deque
import sys
input = sys.stdin.readline

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

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

def bfs(v):
  order = 1
  q = deque([v])
  visited[v] = order
  
  while q:
    node = q.popleft() 
    graph[node].sort(reverse=True)

    for neighbor in graph[node]:
      if visited[neighbor] == 0:
        order += 1 
        visited[neighbor] = order
        q.append(neighbor)

bfs(r)
for i in range(1, n+1):
  print(visited[i])

 

 


 

⭐️ DFS와 BFS에 대해서 아직 잘 모른다면?

 

[알고리즘] DFS와 BFS

DFS (깊이 우선 탐색) 와 BFS (너비 우선 탐색) ?그래프 탐색 알고리즘의 대표적인 예로 이 알고리즘들은 그래프, 트리, 네트워크 등의 자료구조를 탐색하는 데 사용한다. 그래프는 노드(정점)와 노

mi-dairy.tistory.com

 

 

 

 

 

 

 

728x90
반응형
LIST

'PS > BOJ' 카테고리의 다른 글

[Python] 17086번 아기 상어 2  (0) 2024.08.28
[Python] 16948번 데스 나이트  (0) 2024.08.28
[Python] 11123번 양 한마리... 양 두마리...  (0) 2024.08.27
[Python] 16173번 점프왕 쩰리 (Small)  (0) 2024.08.27
[Python] 14716번 현수막  (0) 2024.08.27