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 }
     
     
  • 相关阅读:
    $.each与$().each
    冒泡排序和用for循环画菱形
    windows10, 安装wamp无法启动服务的问题
    使用MySql数据库, 浏览器接收返回数据报错SyntaxError: unterminated string literal
    SWT, JFace必须的jar包和有可能会用到的jar
    easyui中tree使用simpleData的形式加载数据
    树形菜单的json字符串的拼接
    选择合适的String拼接方法(这篇博客是我抄的)
    hibernate进行多表联合查询
    操作文件和目录
  • 原文地址:https://www.cnblogs.com/a1225234/p/5036852.html
Copyright © 2011-2022 走看看