bfs六十分!!!求助!!!
查看原帖
bfs六十分!!!求助!!!
533160
rainbow_cat楼主2022/8/26 17:20
#include<bits/stdc++.h>
using namespace std;
int a[220][220];
bool b[100000];
int ans[100000];
queue<int>q;
int main()
{
	int n,aa,bb;
	scanf("%d%d%d",&n,&aa,&bb);
	for(int i=1;i<=n;i++)
	{
		int dd;
		scanf("%d",&dd);
		if(i+dd<=n)
		{
			a[i][i+dd]=1;
		}
		if(i-dd>=1)
		{
			a[i][i-dd]=1;
		}
	}
	q.push(aa);
	b[aa]=1; 
	ans[aa]=0;
	while(!q.empty())
	{
		int u=q.front();
		q.pop();
		b[u]=0;
		for(int i=1;i<=n;i++)
		{
			if(a[u][i]==1&&!b[i])
			{
				b[i]=1;
				q.push(i);
				ans[i]=ans[u]+1;
				if(i==bb)
				{
					printf("%d",ans[i]);
					return 0;
				}
			}
		}
	}
	printf("-1");
	return 0;
}
2022/8/26 17:20
加载中...