BOJ - 14496

주의·2024년 1월 7일
0

boj

목록 보기
56/214

백준 문제 링크
그대, 그머가 되어

❓접근법

  1. BFS를 사용했다.
  2. 방문 처리할 변수인 visited와 치환 횟수를 저장할 answer를 만들었다.
  3. 자식 노드에 처음 방문하면 방문 처리한 후
    자식 노드의 횟수 (answer[i]) = 부모 노드의 횟수 (answer[v]) + 1 queue에 자식 노드를 넣어준다.
  4. bfs(A)를 실행시키고, 조건은 다음과 같다
  • A == B인 경우 0을 출력
  • A != B인 경우
    • answer[B] == 0 이면 -1을 출력
    • answer[B] != 0이면 answer[B]를 출력

👌🏻코드

from collections import deque
A,B = map(int, input().split())
N,M = map(int, input().split())

graph = [[] for _ in range(N+1)]
for _ in range(M):
    x, y = map(int, input().split())
    graph[x].append(y)
    graph[y].append(x)
    
visited = [False] * (N+1)
answer = [0] * (N+1)

def bfs(x):
    queue = deque()
    queue.append(x)
    
    visited[x] = True
    
    while queue:
        v = queue.popleft()
        
        for i in graph[v]:
            if not visited[i]:
                visited[i] = True
                answer[i] = answer[v] + 1
                queue.append(i)
                
bfs(A)

if A == B:
    print(0)
else:
    if answer[B] == 0:
        print(-1)
    else:
        print(answer[B])

0개의 댓글