您的位置:首页 > 其它

POJ 3278 Catch That Cow

2011-08-23 02:44 381 查看
POJ_3278[/b]

这个是个比较简单的BFS的题目。

#include<stdio.h>
#include<string.h>
int dis[200010],q[200010];
int main()
{
int i,j,N,K,front,rear,n,newn;
while(scanf("%d%d",&N,&K)==2)
{
memset(dis,-1,sizeof(dis));
dis
=0;
front=rear=0;
q[rear++]=N;
while(front<rear)
{
n=q[front++];
if(n==K)
break;
if(n<K)
{
newn=n-1;
if(dis[newn]<0)
{
dis[newn]=dis
+1;
q[rear++]=newn;
}
newn=n+1;
if(dis[newn]<0)
{
dis[newn]=dis
+1;
q[rear++]=newn;
}
newn=2*n;
if(dis[newn]<0)
{
dis[newn]=dis
+1;
q[rear++]=newn;
}
}
else
{
newn=n-1;
if(dis[newn]<0)
{
dis[newn]=dis
+1;
q[rear++]=newn;
}
}
}
printf("%d\n",dis[K]);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: