第一个点TLE了,求助大佬
查看原帖
第一个点TLE了,求助大佬
735264
__wjy__楼主2023/7/20 10:39
#include<iostream>
using namespace std;
int n, a, b, p[200], s = 1000000, vis[100];
void dfs(int k,int niu){
	if(k == b){
		s = min(s, niu);
	}
	if(niu > s){
		return;
	}
	vis[k] = 1;
	if(k + p[k] <= n && vis[k + p[k]] == 0)
		dfs(k + p[k], niu + 1);	
	if(k - p[k] >= 1 && vis[k - p[k]] == 0)
		dfs(k - p[k], niu + 1);
	vis[k] = 0;
}
int main(){
	cin>>n>>a>>b;
	for(int i = 1; i <= n; i++){
		cin>>p[i];
	}
	vis[a] = 1;
	dfs(a, 0);
	if(s != 1000000){
		cout<<s;
	}
	else{
		cout<<-1;
	}
	return 0;
}
2023/7/20 10:39
加载中...