1 条题解

  • 0
    @ 2019-07-16 19:30:18
    /*奇怪的电梯*/
    
    #include <bits/stdc++.h>
    using namespace std;
    struct state
    {
        int y;
        int step;
    };
    int k[1008];
    state f,t;
    bool ceng[10008];
    int n,a,b;
    int BFS(state s)
    {
        queue<state>q;
        q.push(s);
        ceng[s.y]=1;
        while(!q.empty())
        {
            t=q.front();
            if(t.y==b)
            {
                return f.step;
            }
            t.step++;
            if(t.y<b)
            {
                f=t;
                f.y+=k[f.y];
                if(ceng[f.y]==0)
                {
                    q.push(f);
                    ceng[f.y]=1;
                }
            }
            if(t.y-k[t.y]>=1)
            {
                f=t;
                f.y-=k[f.y];
                if(ceng[f.y]==0)
                {
                    q.push(f);
                    ceng[f.y]=1;
                }
            }
            q.pop();
        }
        return -1;
    }
    int main()
    {
        
        cin>>n>>a>>b;
        for(int i=1;i<=n;i++)
            cin>>k[i];
        state x;
        x.y=a;
        x.step=0;
        cout<<BFS(x);
    }
    
  • 1

信息

ID
1018
难度
9
分类
(无)
标签
递交数
1
已通过
1
通过率
100%
上传者