您的位置:首页 > 其它

poj 3278 Catch That Cow

2014-06-13 17:08 323 查看
Catch That Cow
Time Limit: 2000MSMemory Limit: 65536K
Total Submissions: 44151Accepted: 13789
DescriptionFarmer John has been informed of the location of a fugitive cow and wants to catch her immediately. He starts at a point N (0 ≤ N ≤ 100,000) on a number line and the cow is at a point K (0 ≤ K ≤ 100,000) on the same number line. Farmer John has two modes of transportation: walking and teleporting.* Walking: FJ can move from any point X to the points X - 1 or X + 1 in a single minute* Teleporting: FJ can move from any point X to the point 2 × X in a single minute.If the cow, unaware of its pursuit, does not move at all, how long does it take for Farmer John to retrieve it?InputLine 1: Two space-separated integers: N and KOutputLine 1: The least amount of time, in minutes, it takes for Farmer John to catch the fugitive cow.Sample Input
5 17
Sample Output
4
#include <iostream>#include <stdio.h>#include <stdlib.h>#include <algorithm>#include <string.h>#include <stdlib.h>using namespace std;struct node{    int x,sum;}q[100001]; int b[100001]; int xx[]={-1,1}; void bfs(int n,int m) {     memset(b,0,sizeof(b));     b=1;     struct node t,r;     t.x=n;     t.sum=0;     int k=0,l=0,i;     q[l++]=t;     while(k<l)     {         t=q[k++];         if(t.x==m)         {             printf("%d\n",t.sum);             return ;         }         for(i=0;i<=2;i++)         {             if(i==2)                r.x=2*t.x;             else r.x=t.x+xx[i];             if(r.x>=0&&r.x<100001&&b[r.x]==0)             {                 r.sum=t.sum+1;                 b[r.x]=1;                 q[l++]=r;             }         }       } }int main(){   int n,m;  scanf("%d%d",&n,&m);       bfs(n,m);}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: