• Catch That Cow(BFS)


    Catch That Cow

    Time Limit: 5000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
    Total Submission(s): 10166    Accepted Submission(s): 3179


    Problem Description
    Farmer 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?
     
    Input
    Line 1: Two space-separated integers: N and K
     
    Output
    Line 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
    Hint
    The fastest way for Farmer John to reach the fugitive cow is to move along the following path: 5-10-9-18-17, which takes 4 minutes.
     1 #include <cstdio>
     2 #include <iostream>
     3 #include <queue>
     4 #include <cstring>
     5 using namespace std;
     6 int b,e;
     7 int Mintim;
     8 struct node
     9 {
    10     int pos,t;
    11 }k,tem;
    12 int vis[100000+10];
    13 queue<node> s;
    14 void bfs()
    15 {
    16     while(!s.empty())
    17         s.pop();
    18     k.pos=b,k.t=0;
    19     s.push(k);
    20     while(!s.empty())
    21     {
    22         k=s.front();
    23         s.pop();
    24         if(k.pos==e)
    25         {
    26             Mintim=k.t;
    27             return;
    28         }
    29         if(k.pos<0||k.pos>100000||vis[k.pos])    continue;
    30         vis[k.pos]=1;
    31         tem.t=k.t+1;
    32         tem.pos=k.pos+1;
    33         s.push(tem);
    34         tem.pos=k.pos-1;
    35         s.push(tem);
    36         tem.pos=k.pos*2;
    37         s.push(tem);
    38     }
    39 }
    40 int main()
    41 {
    42     int i,j;
    43     freopen("in.txt","r",stdin);
    44     while(scanf("%d%d",&b,&e)!=EOF)
    45     {
    46         memset(vis,0,sizeof(vis));
    47         bfs();
    48         printf("%d
    ",Mintim);
    49     }
    50     return 0;
    51 }
     
     
  • 相关阅读:
    Scala比较器---Ordered与Ordering
    WebSocket、Socket、TCP、HTTP区别
    WebSocket 是什么原理?为什么可以实现持久连接?
    写扩展性好的代码:函数
    Go语言的类型转换和类型断言
    go jwt OAuth2.0
    User Agent 里的各个字段含义
    前后端分离跨域问题解决方案
    beego + websocket 向页面推送数据
    beego orm关联查询之多对多(m2m)
  • 原文地址:https://www.cnblogs.com/a1225234/p/5036852.html
Copyright © 2020-2023  润新知