https://www.acmicpc.net/problem/5014
1.시행착오
범위가 1~f~1000000이므로
if(f>=0) continue; //정답 , 범위를 정확히 맞춰야함, 안맞추면 f==0일때를 탐색하여 오답이됨
if(f>0) continue; //오답!
2. 전체코드
#include <bits/stdc++.h>
using namespace std;
int f, s, g, u, d,ret=987654321;
int v[1000000 + 4];
int main() {
cin.tie(0);
cin >> f>>s>> g>> u>> d;
queue<int> q;
q.push(s);
v[s] = 1; //초기방문체크
while (q.size()) {
int cur = q.front(); q.pop();
for (auto nxt : { cur + u, cur - d }) {
if (nxt<=0 || nxt>f) continue;
if (v[nxt]) continue;
q.push(nxt);
v[nxt] = v[cur] + 1;
}
}
if (v[g] == 0) {
cout << "use the stairs";
return 0;
}
cout << v[g]-1;
return 0;
}
'Algorithm > bfs' 카테고리의 다른 글
백준 16928 뱀과 사다리 게임 c++ // dp불가능한경우, bfs복습 (0) | 2024.05.13 |
---|---|
백준 9205 맥주마시면서걸어가기 c++ // bfs, 출력시 "\n을 빼먹지마라.." (0) | 2024.03.09 |
백준 13549 숨바꼭질3 c++ // pq를 이용한 bfs 구현방법 (0) | 2023.11.29 |
프로그래머스 거리두기확인하기 c++ // bfs, check함수 활용방법, 문자열을 배열처럼 활용하는방법 (0) | 2023.11.22 |
프로그래머스 가장 먼 노드 c++ // bfs, 이동거리체크는 bfs (0) | 2023.10.18 |