news 2026/7/29 1:50:17

【双端队列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/7/24 7:22:33

计算机Java毕设实战-基于springboo的社团成员活动策划组织管理系统(【完整源码+LW+部署说明+演示视频,全bao一条龙等】

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

作者头像 李华
网站建设 2026/7/18 20:25:27

当系统出现找不到msvcr120.dll文件问题 免费下载方法分享

在使用电脑系统时经常会出现丢失找不到某些文件的情况&#xff0c;由于很多常用软件都是采用 Microsoft Visual Studio 编写的&#xff0c;所以这类软件的运行需要依赖微软Visual C运行库&#xff0c;比如像 QQ、迅雷、Adobe 软件等等&#xff0c;如果没有安装VC运行库或者安装…

作者头像 李华
网站建设 2026/7/29 0:39:12

2026年高效降低AI率工具:这些免费降AI率工具实测,有效降AI率高达60%

一、 2026年了&#xff0c;别让“AI率”卡住你的学位证说真的&#xff0c;现在的毕业季太难了。学校查重系统升级了。以前只查复制比。现在还要查论文降aigc率。很多同学都在问我。明明是自己写的&#xff0c;怎么也被标红&#xff1f;或者用AI润色了一段&#xff0c;直接飙到6…

作者头像 李华
网站建设 2026/7/24 1:20:22

深度学习篇---随机森林通俗理解

核心比喻&#xff1a;森林与委员会 想象一下&#xff0c;你现在有一个难题&#xff08;比如&#xff1a;判断一个水果是苹果还是橙子&#xff09;&#xff0c;你自己拿不准主意。你会怎么办&#xff1f; 一个聪明的方法是&#xff1a;去问一群人&#xff0c;然后采纳大多数人…

作者头像 李华
网站建设 2026/7/24 3:00:01

社会网络仿真软件:NetLogo_(19).社会网络仿真的伦理与法律问题

社会网络仿真的伦理与法律问题 在进行社会网络仿真时&#xff0c;伦理与法律问题不容忽视。这些问题不仅关系到仿真模型的准确性&#xff0c;还直接影响到仿真结果的应用和解释。本节将详细探讨这些伦理与法律问题&#xff0c;包括数据隐私、知情同意、模型的公平性和透明度&a…

作者头像 李华