news 2026/4/23 17:08:03

【双端队列bfs】

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【双端队列bfs】

【双端队列bfs】

笔记而已
推荐好文
推荐视频
双端队列bfs是解决0-1bfs最常用的一种手段
0-1bfs就是边值只有0或1两种情况时用的bfs
一般是求起点到终点所用边值总值最小为多少
用例题更好说明
1.拖拉机

这里,在通过没有干草块的位置时所用边值为零
通过有干草块位置时边值为1
要求需要移除最少的数量
那么一定是能不移就不移最好,实在需要移再移
换句话说,就是优先走没有干草块的位置,当走完没有干草块的位置时再走有干草块的位置

此时可以用双端队列deque来实现
将没有干草块的压入队头,有干草块的压入队尾
每次只用队头元素,就能实现先走边值为0,再走边值为1

不同于朴素bfs
0-1bfs不需要判重数组,一个点可能多次经过
但是,只有在值更小时才需要更新

代码

#include<bits/stdc++.h>//#define int long longusingnamespacestd;boolg[1015][1015];intdx[]={1,-1,0,0};intdy[]={0,0,1,-1};intdis[1015][1015];structnode{intx,y;};deque<node>dq;intn,x,y;voidbfs(intx,inty){dq.push_front((node){x,y});while(dq.size()){intax=dq.front().x,ay=dq.front().y;dq.pop_front();for(inti=0;i<4;i++){intsx=ax+dx[i],sy=ay+dy[i];if(sx>=0&&sx<=1010&&sy>=0&&sy<=1010){if(dis[sx][sy]<=dis[ax][ay]+g[sx][sy])continue;//只有值更小时,才需要更新if(!g[sx][sy])dq.push_front((node){sx,sy}),dis[sx][sy]=dis[ax][ay];if(g[sx][sy])dq.push_back((node){sx,sy}),dis[sx][sy]=dis[ax][ay]+1;if(!sx&&!sy)return;}}}}voidsolve(){cin>>n>>x>>y;while(n--){inta,b;cin>>a>>b;g[a][b]=1;}memset(dis,1e6,sizeof(dis));dis[x][y]=0;bfs(x,y);cout<<dis[0][0]<<endl;}signedmain(){intt=1;//cin>>t;while(t--){solve();}return0;}
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/23 14:42:44

计算机小程序毕设实战-基于springboot的医院设备管理及报修小程序的设计与实现【完整源码+LW+部署说明+演示视频,全bao一条龙等】

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

作者头像 李华
网站建设 2026/4/23 15:51:31

typescript-接口的基本使用(三)

上一节我们讲了可接口中可选属性的用法&#xff0c;那么现在想这样一个问题&#xff0c;小的时候&#xff0c;我们看超人&#xff0c;超人可以做任何事情。不仅限于帮助人&#xff0c;帮助动物&#xff0c;帮助植物.....因为这些种类都有不同的“属性”&#xff0c;我们不可以局…

作者头像 李华
网站建设 2026/4/18 17:18:20

芒格的“锚定效应“警示:避免固有思维陷阱

芒格的"锚定效应"警示&#xff1a;避免固有思维陷阱 关键词&#xff1a;锚定效应、固有思维陷阱、认知偏差、决策影响、避免方法 摘要&#xff1a;本文围绕芒格所提及的“锚定效应”展开&#xff0c;深入剖析其原理、影响及如何避免陷入固有思维陷阱。详细介绍了锚定…

作者头像 李华
网站建设 2026/4/23 10:37:49

2026新版Python3.14.2安装全攻略

好的&#xff0c;这是针对2026最新版Python 3.14.2的安装与使用指南&#xff1a;Python 3.14.2 安装使用指南一、安装步骤访问官网打开浏览器&#xff0c;访问官方下载页面&#xff1a;https://www.python.org/downloads/选择安装包根据操作系统选择对应版本&#xff1a;Window…

作者头像 李华
网站建设 2026/4/22 14:27:41

永磁同步电机(PMSM)的PI控制

目录 一、PID各项的作用 &#xff08;1&#xff09;比例&#xff08;P&#xff09; &#xff08;2&#xff09;积分&#xff08;I&#xff09; &#xff08;3&#xff09;微分&#xff08;D&#xff09; 二、实际应用中的常见组合 三、永磁同步电机&#xff08;PMSM&…

作者头像 李华