100分求助,#1 TLE
查看原帖
100分求助,#1 TLE
658145
flysfy_LJX楼主2023/3/20 19:34

rt

#include<bits/stdc++.h>
using namespace std;
int n,s,c,a[222],minx=2222222,sum=0;
bool vis[222];
void dfs(int x)
{
	if(sum>=minx) return;
	if(x==c)
	{
		minx=sum;
		return;
	}
	for(int i=-1;i<=1;i+=2)
	{
		int xx=x+i*a[x];
		if(xx>=1&&xx<=n&&!vis[xx])
		{
			sum++;
			vis[xx]=1;
			dfs(xx);
			vis[xx]=0;
			sum--;
		}
	}
}
int main()
{
	cin >> n >> s >> c;
	for(int i=1;i<=n;i++)
		cin >> a[i];
	vis[s]=1;
	dfs(s);
	if(minx==2222222)
	{
		cout << -1;
		return 0;
	}
	cout << minx;
	return 0;
}

评测记录

2023/3/20 19:34
加载中...