洛谷 P1135 奇怪的电梯__(刷题)bfs
从今天开始,我要刷一些bfs或dfs 的题目了,现在开始的每道题都不简单(对于我而言)加油吧!
今天课上20mins刷了一道题,bfs,随便挑的。
课上只得到90分;
回到家,冷静一下,就通过打表得到了100分!!
是个好的开始!
代码见下:
1 #include<bits/stdc++.h> 2 using namespace std; 3 const int maxn=1e6 + 5; 4 5 int n,a,b; 6 int x[maxn]; 7 int used[maxn]; 8 int k; 9 bool is=false; 10 11 struct node 12 { 13 int step,floor; 14 }; 15 16 void bfs() 17 { 18 queue<node> q; 19 q.push(node{0,a}); 20 while(!q.empty()) 21 { 22 node p=q.front(); 23 q.pop(); 24 if(p.floor == b) 25 { 26 printf("%d\n",p.step); 27 is=true; 28 return; 29 } 30 k = p.floor+x[p.floor]; 31 if(k<=n && !used[k]) 32 { 33 q.push(node{p.step+1,k}); 34 used[k]=1; 35 } 36 k = p.floor-x[p.floor]; 37 if(k>1 && !used[k]) 38 { 39 q.push(node{p.step+1,k}); 40 used[k]=1; 41 } 42 } 43 } 44 45 int main() 46 { 47 scanf("%d%d%d",&n,&a,&b); 48 for(int i=1;i<=n;i++) scanf("%d",&x[i]); 49 if(b == a+x[a] || b == a-a[x]) 50 { 51 printf("1\n"); 52 return 0; 53 } 54 bfs(); 55 if(!is) printf("-1\n"); 56 return 0; 57 }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】