09009

[백준 5014번] 스타트링크 본문

Algorithm/BFS DFS
[백준 5014번] 스타트링크
09009

문제 보기

https://www.acmicpc.net/problem/5014

 

5014번: 스타트링크

첫째 줄에 F, S, G, U, D가 주어진다. (1 ≤ S, G ≤ F ≤ 1000000, 0 ≤ U, D ≤ 1000000) 건물은 1층부터 시작하고, 가장 높은 층은 F층이다.

www.acmicpc.net

 

문제 해결

방문한 노드는 방문 표시를 해주는 것에 유의할 것

 

 

 

소스 코드

import sys
from collections import deque
input = sys.stdin.readline
f, s, g, u, d = map(int, input().split())

dp = [0 for _ in range(f+1)]
visited = [0 for _ in range(f+1)]

def bfs(v):
    q = deque([v])
    visited[v] = 1
    while q:
        v = q.popleft()
        if v == g:
            return dp[g]
        for i in (v+u, v-d):
            if 0 < i <= f and not visited[i]:
                visited[i] = 1
                dp[i] = dp[v] + 1
                q.append(i)
    if dp[g] == 0:
        return "use the stairs"            

print(bfs(s))

 

'Algorithm > BFS DFS' 카테고리의 다른 글

(X) [백준 9466번] 팀 프로젝트  (0) 2023.09.27
[백준 6593번] 상범 빌딩  (0) 2023.09.24
[백준 2583번] 영역 구하기  (0) 2023.09.05
[백준 1012번] 유기농 배추  (0) 2023.03.26
[백준 2667번] 단지번호붙이기  (0) 2023.03.26