HDU-2717-Catch That Cow
基本的BFS,朝3個方向搜索即可
[cpp]
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<queue>
using namespace std;
int n,k;
char visit[100005];
struct node
{
int x;
int time;
};
int go(int x)
{
if(0<=x&&x<=100000)
return 1;
return 0;
}
void bfs(int n,int k)
{
queue<node>q;
node st,ed;
memset(visit,0,sizeof(visit));
visit[n]=1;
st.x=n;
st.time=0;
q.push(st);
while(!q.empty())
{
st=q.front();
q.pop();
if(st.x==k)
{
printf("%d\n",st.time);
return;
}
if(go(2*st.x)&&!visit[2*st.x])
{
ed.x=2*st.x;
ed.time=st.time+1;
visit[ed.x]=1;
q.push(ed);
}
if(go(st.x-1)&&!visit[st.x-1])
{
ed.x=st.x-1;
ed.time=st.time+1;
visit[ed.x]=1;
q.push(ed);
}
if(go(st.x+1)&&!visit[st.x+1])
{
ed.x=st.x+1;
ed.time=st.time+1;
visit[ed.x]=1;
q.push(ed);
}
}
return;
}
int main() www.2cto.com
{
while(scanf("%d %d",&n,&k)!=EOF)
{
if(n==k)
printf("0\n");
else
bfs(n,k);
}
return 0;
}
作者:Cambridgeacm