讨论 / 求解奇怪的电梯
xing980216 2014-03-30 00:52:36
点我顶贴 收藏 删除
#include<cstdio>

#include<cstdlib>

#include<cstring>

using namespace std;

int q[10005][3],s[105],x[10005],n,a,b,head=1,tail=1;

int main()

{

freopen("lift.in","r",stdin);

freopen("lift.out","w",stdout);

memset(s,0xff,sizeof(s));

scanf("%d%d%d",&n,&a,&b);

q[1][1]=a;q[1][2]=0;

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

scanf("%d",&x[i]);

while(head<=tail)

{

int x1=q[head][1]+x[q[head][1]];

int x2=q[head][1]-x[q[head][1]];

if(x1<=n)

{

if(s[x1]==-1)

{

s[x1]=q[head][2]+1;

tail++;

q[tail][1]=x1;

q[tail][2]=s[x1];

}

}

if(x2>0)

{

if(s[x2]==-1)

{

s[x2]=q[head][2]+1;

tail++;

q[tail][1]=x2;

q[tail][2]=s[x2];

}

}

if(s[b]>0)

{

printf("%d",s[b]);

return 0;

}

head++;

}

printf("-1");

}

WA60

查看更多回复
提交回复