B15 BFS 抓住那头牛
视频链接:116 抓住那头牛 最小步数_哔哩哔哩_bilibili
Luogu P1588 [USACO07OPEN]Catch That Cow S
#include <cstring> #include <iostream> #include <algorithm> #include <queue> using namespace std; const int N=100005; int x, y, dis[N]; void bfs(){ memset(dis,-1,sizeof dis); dis[x]=0; queue<int> q; q.push(x); while(q.size()){ int x=q.front(); q.pop(); if(x+1<N && dis[x+1]==-1){ dis[x+1]=dis[x]+1; //前进一步 q.push(x+1); } if(x-1>0 && dis[x-1]==-1){ dis[x-1]=dis[x]+1; //后退一步 q.push(x-1); } if(2*x<N && dis[2*x]==-1){ dis[2*x]=dis[x]+1; //走到2x位置 q.push(2*x); } if(x==y){printf("%d\n",dis[y]);return;} } } int main(){ int T; cin>>T; while(T--) cin>>x>>y, bfs(); }
#include <cstring> #include <iostream> #include <algorithm> using namespace std; const int N=100005; int a, b, dis[N]; int q[N]; void bfs(){ memset(dis, -1, sizeof dis); dis[a]=0;int h=0, t=0; q[0]=a; while(h<=t){ int x=q[h++]; if(x+1<N && dis[x+1]==-1){ dis[x+1]=dis[x]+1; //前进一步 q[++t]=x+1; } if(x-1>0 && dis[x-1]==-1){ dis[x-1]=dis[x]+1; //后退一步 q[++t]=x-1; } if(2*x<N && dis[2*x]==-1){ dis[2*x]=dis[x]+1; //走到2x位置 q[++t]=2*x; } if(x==b){printf("%d\n",dis[b]);return;} } } int main(){ int T; cin>>T; while(T--) cin>>a>>b, bfs(); }
分类:
B 搜索
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!