- #include <iostream>
- #include <cstdio>
- #include <cstring>
- #include <queue>
- #include <stack>
- using namespace std;
- int N, K;
- int vis[100010];
- struct node {
- int pos;
- int minute;
- };
- int bfs();
- int main()
- {
- // freopen("in.txt", "r", stdin);
- // freopen("out.txt", "w", stdout);
- cin>>N>>K;
- memset(vis, 0, sizeof(vis));
- cout<<bfs()<<endl;
- return 0;
- }
- int bfs()
- {
- queue<node>Queue;
- node Node;
- Node.pos = N;
- Node.minute = 0;
- vis[Node.pos] = 1;
- Queue.push(Node);
- while (!Queue.empty()) {
- int x = Queue.front().pos;
- int y = Queue.front().minute;
- // cout<<x<<endl;
- Queue.pop();
- if (x == K) {
- return y;
- }
- if (x-1>=0 && (!vis[x-1])) {
- vis[x-1] = 1;
- Node.pos = x-1;
- Node.minute = y+1;
- Queue.push(Node);
- }
- if (x+1<=100000 && (!vis[x+1])) {
- vis[x+1] = 1;
- Node.pos = x+1;
- Node.minute = y+1;
- Queue.push(Node);
- }
- if (x*2<=100000 && (!vis[x*2])) {
- vis[x*2] = 1;
- Node.pos = x*2;
- Node.minute = y+1;
- Queue.push(Node);
- }
- }
- return 0;
- }
bfs
最新推荐文章于 2023-09-28 12:18:32 发布