第八第九个点WA,用的是广搜
查看原帖
第八第九个点WA,用的是广搜
185467
Ssher03楼主2021/11/18 11:09
#include<iostream>
#include<cstdio>
#include<queue>
using namespace std;
int N,A,B;
int op[205];
bool vis[205];
struct node
{
    int x,d;
    node(int xx,int dd)
    {
        x=xx;
        d=dd;
    }
};
int bfs(int x)
{
    queue <node> q;
    q.push(node(x,0));
    vis[x]=1;
    while(!q.empty())
    {
        node now=q.front();
        if(now.x==B)
        {
            return now.d;
        }
        q.pop();
        if(now.x+op[now.x]<=N&&!vis[now.x+op[now.x]])
        {
            vis[now.x+op[now.x]]=1;
            q.push(node(now.x+op[now.x],now.d+1));
        } 
        if(now.x-op[now.x]>=1&&!vis[now.x+op[now.x]])
        {
            vis[now.x-op[now.x]]=1;
            q.push(node(now.x-op[now.x],now.d+1));
        }
    }
    return -1;
}
int main()
{
    cin>>N>>A>>B;
    for(int i=1;i<=N;i++)
    {
        cin>>op[i];
    }
    cout<<bfs(A)<<endl;
    return 0;
}
2021/11/18 11:09
加载中...