pku3278 Catch That Cow

//普通的广搜

#include <stdio.h>
#include <string.h>

 

#define QMAX 150000 //因为不是循环队列
#define LIM 100001

 

int N,K,front,rear,visited[LIM]= {0},que[QMAX];

 

void bfs()
{
    front=rear=-1;
    que[++rear]=N;
    while( front!=rear )
    {
        int n=que[++front];
        if(n==K)
        {
            printf("%d\n",visited[n]);
            return;
        }
        if( n+1 <=LIM && visited[ n+1 ] ==0 )
        {
            que[++rear]=n+1;
            visited[n+1]=visited[n]+1;
        }
        if( n- 1 <=LIM && visited[ n-1 ] ==0 )
        {
            que[++rear]=n-1;
            visited[n-1]=visited[n]+1;
        }
        if( n*2 <=LIM && visited[ n*2 ] ==0 )
        {
            que[++rear]=n*2;
            visited[n*2]=visited[n]+1;
        }
    }
}

int main()
{
    while(scanf("%d %d",&N,&K)!=EOF)
    {
        // memset(visited,0,sizeof(visited)); //这题好像只有一组测试数据
        bfs();
    }
}

 

posted @ 2010-08-18 13:51  菜到不得鸟  阅读(178)  评论(0)    收藏  举报