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();
}
}
浙公网安备 33010602011771号