zoukankan      html  css  js  c++  java
  • 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 }
     
     
  • 相关阅读:
    设计模式---适配器模式
    【面经】2019-4-1 杭州边锋网络面经
    web前端基础——jQuery编程进阶
    web前端基础——jQuery编程基础
    web前端基础——初识HTML DOM编程
    web前端基础——初识JavaScript
    web前端基础——初识CSS
    web前端基础——初识HTML
    CentOS 6.5上安装python2.7、pip以及Python命令行补全和yum冲突解决
    Python中常用技巧整理
  • 原文地址:https://www.cnblogs.com/a1225234/p/5036852.html
Copyright © 2011-2022 走看看