bfs TLE
查看原帖
bfs TLE
1457323
jyx130320楼主2025/6/30 20:05
#include<bits/stdc++.h>
using namespace std;
int k[205],vis[205];
int n,a,b;
int bfs(int a){
    queue<int>q;
    q.push(a);
    vis[a]=1;
    while(q.size()){
        int x=q.front();
        q.pop();
        int x1=x-k[x],x2=x+k[x];
        if(x1>0){
            if(vis[x1]==0)vis[x1]=vis[x]+1;
            else vis[x1]=min(vis[x]+1,vis[x1]);
            q.push(x1);
        }
        if(x2<=n){
            if(vis[x2]==0)vis[x2]=vis[x]+1;
            else vis[x2]=min(vis[x]+1,vis[x2]);
            q.push(x2);
        }
    }
    return vis[b]-1;
}
int main(){
    cin>>n>>a>>b;
    for(int i=1;i<=n;i++){
        cin>>k[i];
    }
    cout<<bfs(a);
    return 0;
}
2025/6/30 20:05
加载中...