코드
#include <bits/stdc++.h>
using namespace std;
int n,m,a[100004],cnt,res;
void bfs(int x) {
a[x] = 1;
queue<int> q;
q.push(x);
while(q.size()) {
int px = q.front(); q.pop();
if (px == m) {
res = a[px];
cnt++;
}
for(int i : {px-1, px+1, px*2}) {
if(i >= 100001 || i < 0) continue;
if(!a[i] || a[i] == a[px]+1) { // 첫 방문이거나, 이미 방문했는데 최단거리에 속한 경우
a[i] = a[px] + 1;
q.push(i);
}
}
}
}
int main() {
cin >> n >> m;
bfs(n);
cout << res-1 << '\n' << cnt << '\n';
return 0;
}
'백준' 카테고리의 다른 글
[백준] 14620번 꽃길 C++ 코드 (0) | 2024.04.22 |
---|---|
[백준] 1189번 컴백홈 C++ 코드 (0) | 2024.04.22 |
[백준] 2636번 치즈 C++ 코드 (0) | 2024.04.19 |
[백준] 14502번 연구소 C++ 코드 (0) | 2024.04.18 |
[백준] 4659번 비밀번호 발음하기 C++ 코드 (0) | 2024.04.11 |