只有76,找不到哪错了,麻烦佬看看
查看原帖
只有76,找不到哪错了,麻烦佬看看
1252709
young020202楼主2024/3/3 20:36
#include<iostream>
#include<algorithm>
#include<queue>
using namespace std;
int n,a,b;
int k[300];
int dis[300];
int f[300]={0};
const int N=500;
queue<int>q;
int main()
{
	cin>>n>>a>>b;
	fill(dis+1,dis+n+1,N);
	dis[a]=0;
	for(int i=1;i<=n;i++)
		cin>>k[i];
	q.push(a);
	while(!q.empty())
	{
		int t=q.front();
		if(t==b)
			break;
		q.pop();
		int next=k[t]+t;
		if(next>=1&&next<=n)
		{
			if(f[next]==0){
			
			dis[next]=dis[t]+1;
			f[next]=1;
			q.push(next);}
		}
		next=t-k[t];
		if(next>=1&&next<=n)
		{
			if(f[next]==0){
			
			dis[next]=dis[t]+1;
			f[next]=1;
			q.push(next);}
		}
	}
	
	cout<<dis[b];
}
2024/3/3 20:36
加载中...