首页 > 其他分享 >A strange lift HDU - 1548 (BFS)

A strange lift HDU - 1548 (BFS)

时间:2023-03-23 16:11:06浏览次数:36  
标签:int Ki strange BFS lift && push dis

题意:第 i 个火车站都有一个数字 Ki (0≤Ki ≤N),火车在第 i 站只能前进Ki 站或后退 Ki 站。火车只能在第 1 站和第 N 站之间行驶。
请问,从第 a 站到第 b 站最少需前进或后退多少次?

分析:利用BFS,将每个站出发能到的所有站都入队,不断更新下去,直到所有站都被到达或者车都停止。这样得到的就是最快能到达的。
每个站只需要到达一次即可,可以在入队前判断该站是否到达过。

#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
const int N = 210, INF = 0x3f3f3f3f;
int n, m, a, b, k[N], dis[N];

int bfs(int s, int e) {
    memset(dis, 0x3f, sizeof(dis));
    queue<int> q; q.push(s), dis[s] = 0;
    while (q.size()) {
        int u = q.front(), v; q.pop();
        if (u == e) return dis[u];

        v = u - k[u];
        if (v >= 1 && dis[v] > dis[u] + 1)
            q.push(v), dis[v] = dis[u] + 1;

        v = u + k[u];
        if (v >= 1 && dis[v] > dis[u] + 1)
            q.push(v), dis[v] = dis[u] + 1;
    }
    return -1;
}
int main() {
    while (~scanf("%d%d%d", &n, &a, &b) && n) {
        for (int i = 1; i <= n; i++)
            scanf("%d", &k[i]);
        printf("%d\n", bfs(a, b));
    }
    return 0;
}

标签:int,Ki,strange,BFS,lift,&&,push,dis
From: https://www.cnblogs.com/hellohebin/p/17247849.html

相关文章

  • BFS
    BFS算法思想:通过队(STL容器queue)/栈(STL容器stack)的使用,实现对全地图的检索不同与dfs的单向检索,bfs是将所有路径同时进行检索浅谈队(queue)-->先进后出浅谈栈(stack)-->......
  • 迷宫问题之bfs
    先来一道简单的迷宫模板题迷宫由n行m列的单元格组成,每个单元格要么是空地,要么是障碍物。其中1表示空地,可以走通,2表示障碍物。输出从左上角到右下角的最短路径长度。......
  • bfs走迷宫
      #include<iostream>#include<cstring>#include<queue>constintN=110;intn,m;typedefpair<int,int>PII;intg[N][N];//存图intd[N][N];//记录距离PIIq......
  • n-皇后问题(bfs)
        #include<iostream>usingnamespacestd;constintN=20;//N*N两倍intn;boolcol[N],dg[N],udg[N];//同一列,对角线,反对角线(标记一下是否可以走)charg[......
  • # 909 -「java」一维数组展开+ BFS解决 -蛇梯棋- 最短步进次数 的详细思路
    Tags:中等数组BFSjava 题目链接:909.蛇梯棋 注意事项[题目中的坑]:【"S形"的概念】:题目开头举例的N*N的数组,其内标示的1~N²数字,指代的是......
  • 2020 年百度之星·程序设计大赛 - 初赛一 Civilization BFS广搜
    problemCivilizationAccepts:619Submissions:2182TimeLimit:6000/3000MS(Java/Others)MemoryLimit:32768/32768K(Java/Others)ProblemDescription这是一个......
  • bfs: 通过利用其它点到出发点的距离 来表示bfs的层数
    题目:微博被称为中文版的Twitter。微博上的用户既可能有很多关注者,也可能关注很多其他用户。因此,形成了一种基于这些关注关系的社交网络。当用户在微博上发布帖子时,他/......
  • DFS和BFS理解+模板+例题
    DFS和BFS理解+模板+例题DFS(深度优先搜索)本质上是暴力把所有的路径都搜索出来,它运用了回溯,保存这次的位置并深入搜索,都搜索完便回溯回来,搜下一个位置,直到把所有最深位置都......
  • DFS和BFS理解+模板+例题
    DFS和BFS理解+模板+例题DFS(深度优先搜索)本质上是暴力把所有的路径都搜索出来,它运用了回溯,保存这次的位置并深入搜索,都搜索完便回溯回来,搜下一个位置,直到把所有最深位置都......
  • bfs详解
    bfs详解1,bfs的基本概念bfs是广度优先搜索,是一种对树形结构的遍历,他的思想是先选定一个点,从这个点出发,每次只走一步,分为四个方向,直到找到正确答案,相较于dfs的直接递归,bfs......