luogu. P1135

#include<bits/stdc++.h>//万能头文件

using namespace std;

struct floors{

    int up,down,step;

    bool visit;

}fs[205];

int main(){

    int n,a,b,tmp;

    cin>>n>>a>>b;

    for(int i=1;i<=n;i++){

        cin>>tmp;

    fs[i].up=i+tmp;

    fs[i].down=i-tmp;

    fs[i].step=-1;

    fs[i].visit=false;

    }

    queue<floors> q;

    fs[a].step=0,fs[a].visit=true;

    q.push(fs[a]);

    while(!q.empty()){

        floors f=q.front();

        q.pop();

        int u=f.up,d=f.down;

        if(u>=1&amp;&amp;u<=n&amp;&amp;fs[u].visit==false){

            fs[u].visit=true;

            fs[u].step=f.step+1;

            q.push(fs[u]);

        }

        if(d>=1&amp;&amp;d<=n&amp;&amp;fs[d].visit==false){

            fs[d].visit=true;

            fs[d].step=f.step+1;

            q.push(fs[d]);

        }

        if(u==b||d==b) break;

    }

    cout<<fs[b].step;//输出

    return 0;

}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值