求助为什么RE
查看原帖
求助为什么RE
480486
倚窗听雨落楼主2021/4/24 21:11
#include <bits/stdc++.h>
using namespace std;
struct Floor{
    int x;
    int step;
    Floor(int xx,int stepp):x(xx),step(stepp){}
};
int main()
{
    int ans=-1;
    int n,a,b;
    int s[250];
    bool vis[250];
    memset(vis,0,sizeof(vis));
    memset(s,0,sizeof(s));
    cin>>n>>a>>b;
    for(int i=1;i<=n;i++)
    {
        scanf("%d",&s[i]);
    }
    queue<Floor> q;
    q.push(Floor(a,0));
    vis[a]=1;
    while(!q.empty())
    {
        Floor f=q.front();q.pop();
        //cout<<f.x<<"   "<<f.step<<endl;
        if(f.x==b){ans=f.step;break;}
        if(s[f.x]+f.x<=n&&(!vis[s[f.x]+f.x])) {vis[s[f.x]+f.x]=1;q.push(Floor(s[f.x]+f.x,f.step+1));}
        if(f.x-s[f.x]>0&&(!vis[f.x-s[f.x]])) {vis[s[f.x]-f.x]=1;q.push(Floor(f.x-s[f.x],f.step+1));}
    }
    cout<<ans<<endl;
    return 0;
}
2021/4/24 21:11
加载中...