题解
2023-08-01 19:35:50
发布于:上海
28阅读
0回复
0点赞
#include<bits/stdc++.h>
using namespace std;
const int N = 1e5 + 10;
struct node {
int x, d;
};
int n, k;
bool inq[N];
int BFS(int x) {
queue<node> q;
q.push({x, 0});
inq[x] = true;
while(!q.empty()) {
node t = q.front();
q.pop();
if(t.x == k) return t.d;
int nx = t.x - 1;
if(nx >= 0 && !inq[nx]) {
q.push({nx, t.d + 1});
inq[nx] = true;
}
nx = t.x + 1;
if(nx <= 100000 && !inq[nx]) {
q.push({nx, t.d + 1});
inq[nx] = true;
}
nx = t.x * 2;
if(nx <= 100000 && !inq[nx]) {
q.push({nx, t.d + 1});
inq[nx] = true;
}
}
}
int main() {
cin >> n >> k;
cout << BFS(n);
return 0;
}
这里空空如也
有帮助,赞一个