30分求调qwq
查看原帖
30分求调qwq
1058985
tarelshy楼主2023/8/15 14:53
#include<bits/stdc++.h>
using namespace std;
int n, st, en, a[2001], d[1001][3],bz[205], i, j, c[2] = {-1,1};
int main()
{
	scanf ("%d%d%d",&n,&st,&en);
	if (st == en)
	{
		printf ("%d",0);
		return 0;
	}
	for( i = 0 ; i < n ; i++)
	{
		scanf ("%d",&a[i]);
	}
	d[1][1] = st;
	d[1][2] = 0;
	bz[st] = 1;
	i = 0;
	j = 1;
	while (i<j)
	{
		i++;
		for (int t = 0; t <= 1; t++)
		{
			int k = d[i][1] + a[d[i][1]] * c[t];
			if ( k>=1 && k<=n )
			{
				j++;
				d[j][1] = k;
				d[j][2] = d[i][2] + 1;
				if (bz[k] == 0)
				{
					bz[k] = 1;
					if (k==en)
					{
						printf ("%d",d[j][2]);
						return 0;
					}
				}
				else j --;
			}
		}
	}
	printf("%d",-1);
	return 0;
}
2023/8/15 14:53
加载中...