(BFS) 백준 2644번 촌수계산

DARTZ·2022년 5월 1일
0

알고리즘

목록 보기
32/135
from collections import deque
import sys
input = sys.stdin.readline
n = int(input())
a, b = map(int, input().split())
m = int(input())
s = [[] for i in range(n + 1)]
result = [0 for i in range(n + 1)]
def bfs(start):
    q = deque()
    q.append(start)
    visit = [0 for i in range(n + 1)]
    visit[start] = 1
    while q: # que에 방문할 경로가 남아있을 때 까지
        d = q.popleft()
        for i in s[d]: # 방문할 지점에 경로가 남아 있을 경우
            if visit[i] == 0: # 방문하지 않았을 경우
                visit[i] = 1
                result[i] = result[d] + 1 # 경로 수 만큼 1을 더 해준다. (촌수가 많다는 것이기 때문에)
                q.append(i)
for i in range(m): # 각 정점에 방문할 지점을 넣어준다.
    x, y = map(int, input().split())
    s[x].append(y)
    s[y].append(x)
bfs(a) # root bfs 한번만 돌리면 정답이 나온다.
print(result[b] if result[b] != 0 else -1) # 정답을 적어주고 친척이 아닐경우 -1 출력
profile
사람들이 비용을 지불하고 사용할 만큼 가치를 주는 서비스를 만들고 싶습니다.

0개의 댓글