HDU-2717-Catch That Cow
Http://acm.hdu.edu.cn/showproblem.php? Pid = 1, 2717
Basic BFS, search in three directions
#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(){while(scanf("%d %d",&n,&k)!=EOF){if(n==k) printf("0\n"); else bfs(n,k);}return 0;}