https://www.acmicpc.net/problem/5014
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | #include <iostream> #include <queue> using namespace std; int main(){ ios_base::sync_with_stdio(false); int f,s,g,u,d; int cnt[1000001] = {}; queue<int> q; cin >> f >> s >> g >> u >> d; q.push(s); cnt[s] = 1; // 방문한지 안 한지 구분 위해. while(!q.empty()){ int cur = q.front(); q.pop(); if(cur == g) break; int df[2] = {cur + u, cur -d}; for(int i = 0; i < 2; i++){ if(df[i]<1 || df[i] > f || cnt[df[i]]) continue; cnt[df[i]] = cnt[cur] +1; q.push(df[i]); } } if(cnt[g]) cout << cnt[g]-1; //처음 시작을 1로 초기화해서. else cout << "use the stairs"; } | cs |
반응형
'프로그래밍 > 문제풀이' 카테고리의 다른 글
[bfs] 백준 16234 인구 이동 (0) | 2018.11.24 |
---|---|
[bfs] 백준 3055 탈출 (0) | 2018.11.23 |
[etc] 백준 1350 진짜 공간 (0) | 2018.11.21 |
[stack] 백준 2841 외계인의 기타 연주 (0) | 2018.11.19 |
[dp] 백준 9465 스티커 (0) | 2018.11.19 |