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;
}

  

posted on 2011-07-22 16:44  sysu_mjc  阅读(124)  评论(0编辑  收藏  举报

导航