#include <iostream>
#include <vector>
#include <queue>
using namespace std;
int d[] = {1, -1, 5};
int s, e;
int dis[10001];
queue<int> Q;
int main() {
freopen("input.txt", "rt", stdin);
cin >> s >> e;
dis[s] = 0;
Q.push(s);
while (!Q.empty()) {
int x = Q.front();
Q.pop();
if (x == e) {
cout << dis[x];
return 0;
}
for (int i = 0; i < 3; i++) {
int pos = x + d[i];
// cout << "pos is : " << pos;
// cout << '\n';
if(pos < 0 || pos > 10000) continue;
else if (dis[pos] == 0) {
dis[pos] = dis[x] + 1;
Q.push(pos);
}
}
}
return 0;
}
BFS활용 시, 먼저 나온 결과값이 최소 도달 거리이다. 따라서 따로 relaxing 해 줄 필요가 없다.
ex)
5 14