PS/백준

[Python] 2644번 촌수계산

s_omi 2024. 8. 13. 09:28

✏️ 문제

 

문제 파악

같은 알고리즘의 문제 중 11725번 트리의 부모 출력 문제가 생각난 .. 매우 비슷함

인접리스트를 활용하면 쉽게 풀 수 있다!

 

알고리즘

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

 

 

코드

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

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

for _ in range(int(input())):
  x, y = map(int, input().split())
  graph[x].append(y)
  graph[y].append(x)

def bfs(v):
  q = deque([v]) 
  visited[v] = 1 
    
  while q:
    node = q.popleft()

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

bfs(a)
if visited[b] != 0:
  print(visited[b] - 1)  # -1로 정확한 촌수 출력
else:
  print(-1)

 

 

 


 

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

 

[알고리즘] DFS와 BFS

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

mi-dairy.tistory.com

 

 

 

 

 

 

'PS > 백준' 카테고리의 다른 글

[Python] 7562번 나이트의 이동  (0) 2024.08.13
[Python] 16953번 A → B  (2) 2024.08.13
[Python] 1389번 케빈 베이컨의 6단계 법칙  (0) 2024.08.13
[Python] 1697번 숨바꼭질  (0) 2024.08.12
[Python] 11725번 트리의 부모 찾기  (0) 2024.08.12