zoukankan      html  css  js  c++  java
  • poj 3278 bfs

    题目大意:FJ要去抓牛...

    思路:bfs即可

     1 #include <iostream>
     2 #include <cstring>
     3 #include <cstdio>
     4 using namespace std;
     5 
     6 const int N = 100001;
     7 bool visit[N];
     8 
     9 struct Node
    10 {
    11     int x, step;
    12 
    13     Node () {}
    14 
    15     Node ( int _x, int _step )
    16     {
    17         x = _x, step = _step;
    18     }
    19 
    20 } q[N];
    21 
    22 bool ok( int x )
    23 {
    24     return x >= 0 && x < N && !visit[x];
    25 }
    26 
    27 int bfs( int src, int des )
    28 {
    29     memset( visit, 0, sizeof(visit) );
    30     int head = 0, tail = 0;
    31     q[tail++] = Node( src, 0 );
    32     visit[src] = 1;
    33     while ( head < tail )
    34     {
    35         Node t = q[head++];
    36         if ( t.x == des ) return t.step;
    37         if ( ok( t.x + 1 ) )
    38         {
    39             q[tail++] = Node( t.x + 1, t.step + 1 );
    40             visit[t.x + 1] = 1;
    41         }
    42         if ( ok( t.x - 1 ) )
    43         {
    44             q[tail++] = Node( t.x - 1, t.step + 1 );
    45             visit[t.x - 1] = 1;
    46         }
    47         if ( ok( t.x * 2 ) )
    48         {
    49             q[tail++] = Node( t.x * 2, t.step + 1 );
    50             visit[t.x * 2] = 1;
    51         }
    52     }
    53     return -1;
    54 }
    55 
    56 int main()
    57 {
    58     int s, t;
    59     while ( scanf("%d%d", &s, &t) != EOF )
    60     {
    61         printf("%d
    ", bfs( s, t ));
    62     }
    63     return 0;
    64 }
  • 相关阅读:
    es6作用域
    es6函数的扩展
    input输入框ios上光标与placeholder、value不能对齐居中
    移动端input常用样式
    webpack安装遇到的坑
    错误类型
    滚动超出一定高度后,导航栏吸顶
    表单change()事件
    第二周学习进度
    第一周学习进度
  • 原文地址:https://www.cnblogs.com/huoxiayu/p/4439167.html
Copyright © 2011-2022 走看看