P1135 奇怪的电梯
奇怪的电梯
题目背景
感谢 @yummy 提供的一些数据。
题目描述
呵呵,有一天我做了一个梦,梦见了一种很奇怪的电梯。大楼的每一层楼都可以停电梯,而且第
输入格式
共二行。
第一行为三个用空格隔开的正整数,表示
第二行为
输出格式
一行,即最少按键次数,若无法到达,则输出 -1
。
样例 #1
样例输入 #1
5 1 5
3 3 1 2 5
样例输出 #1
3
提示
比较简单的一道BFS题
using namespace std;
int p[1000000];
int vis[10000];
int n,a,b;
struct node{
int t,id;
node(){}
node(int a,int b){
t=b;
id=a;
}
};
bool BFS(){
queue<node>q;
q.push(node(a,0));
vis[a]=1;
while(q.size()){
node x=q.front();
q.pop();
int h=x.id;
if(h==b){
cout<<x.t;
return true;
}
int nx1=h+p[h];
int nx2=h-p[h];
if(nx1<=n&&!vis[nx1]){
q.push(node(nx1,x.t+1));
vis[nx1]=1;
}
if(nx2>0&&!vis[nx2]){
q.push(node(nx2,x.t+1));
vis[nx2]=1;
}
}
return false;
}
int main(){
cin>>n>>a>>b;
for(int i=1;i<=n;i++)cin>>p[i];
if(!BFS()){
cout<<-1;
}
return 0;
}
本文作者:yufan1102
本文链接:https://www.cnblogs.com/yufan1102/p/17855586.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
分类:
算法大全 / BFS
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步