poj 3278 Catch That Cow
#include<iostream> //bfs广度优先搜索
#include<deque>
using namespace std;
struct Node
{
int data,times;
}node[1000000];
int n,k,p;
bool visited[500000];
int main()
{
cin>>n>>k;
deque<Node> col;
if(n==k)
cout<<"0\n";
else
{
node[0].data=n;node[0].times=0;
col.push_back(node[0]);
visited[n]=1;
}
while(!col.empty())
{
int d=col.front().data,t=col.front().times;
col.pop_front();
if(d-1==k||d+1==k||2*d==k)
{
cout<<t+1<<endl;
break;
}
if(d-1>=1 && visited[d-1]==0)
visited[d-1]=1,node[++p].data=d-1,node[p].times=t+1,col.push_back(node[p]);
if(visited[d+1]==0)
visited[d+1]=1,node[++p].data=d+1,node[p].times=t+1,col.push_back(node[p]);
if(2*d<500000 && visited[2*d]==0)
visited[2*d]=1,node[++p].data=2*d,node[p].times=t+1,col.push_back(node[p]);
}
return 0;
}