64分,MLE,求调
查看原帖
64分,MLE,求调
1280343
a111111111111楼主2024/9/9 18:29
#include<bits/stdc++.h>
using namespace std;
vector<int> a,v; int n;
void f(int nx)
{
	queue<vector<int>> q;
	q.push({nx,0});
	while(q.size())
	{
		vector<int> p=q.front();
		q.pop();
		int p0=p[0],p1=p[1];
		if(v[p0]<p1) continue;
		v[p0]=min(p1,v[p0]);
		if(p0-a[p0]>=0)
			q.push({p0-a[p0],p1+1});
		if(p0+a[p0]<n)
			q.push({p0+a[p0],p1+1});
	}
}
int main()
{
	ios::sync_with_stdio(false); cin.tie(0);
	int na,nb; cin>>n>>na>>nb;
	na--; nb--;
	a.resize(n); v.resize(n);
	for(int &x:v) x=INT_MAX;
	for(int &x:a) cin>>x;
	f(na);
	cout<<(v[nb]==INT_MAX ? -1:v[nb]);
	return 0;
}
2024/9/9 18:29
加载中...