天天看點

HDOJ 2717

http://acm.hdu.edu.cn/showproblem.php?pid=2717

據說是水題,行吧,水了一個多點。

#include<stdio.h>

int p[100001];

int vis[100001];

int bfs(int farmer,int cow)

{

int right=1,left=0;

int tryy;

p[left]=farmer;

vis[farmer]=0;

while(left!=right)

{

farmer=p[left];

left++;

if(farmer==cow)

return vis[farmer];

tryy=farmer+1;

if(vis[tryy]==-1)

{

p[right++]=tryy;

vis[tryy]=vis[farmer]+1;

}

tryy=farmer-1;

if(vis[tryy]==-1 && tryy>=0)

{

p[right++]=tryy;

vis[tryy]=vis[farmer]+1;

}

tryy=farmer*2;

if(vis[tryy]==-1 && tryy<=100001)

{

p[right++]=tryy;

vis[tryy]=vis[farmer]+1;

}

}

return -1;

}

int main ()

{

int farmer,cow,i; 

while(scanf("%d %d",&farmer,&cow)!=EOF){

for(i=0;i<=100001;i++)

vis[i]=-1;

printf("%d\n",bfs(farmer,cow));

}

return 0;

}