bfs的简单应用:
#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;
}