๐Ÿ—๏ธ Algorithm/๐ŸŸฉ ๋ฐฑ์ค€

๐ŸŸฉ [๋ฐฑ์ค€] [Python] [BFS/DFS] 5014๋ฒˆ_์Šคํƒ€ํŠธ๋งํฌ

Dbswnstjd 2022. 11. 17. 02:29

๋ฌธ์ œ

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

ํ’€์ด

# ๋ฐฑ์ค€ 5014๋ฒˆ ๋ฌธ์ œ - ์Šคํƒ€ํŠธ๋งํฌ
from collections import deque
import sys
input = sys.stdin.readline

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

f, s, g, u, d = map(int, input().split())
visited = [0 for i in range(f+1)]
count = [0 for i in range(f+1)]
print(bfs(s))