玄关/AC:24/蒟蒻求帮助!
查看原帖
玄关/AC:24/蒟蒻求帮助!
1354953
mushroom2016楼主2024/6/1 21:14

wyy紫衫,玄关

#include <bits/stdc++.h>
using namespace std;
int n,a,b,num[204],ans;
bool vis[205],flag;
struct node
{
	int id,step;
};
queue<node> q;
void dfs()
{
	while(!q.empty())
	{
		node now=q.front();
		q.pop();
		if(now.id==b)
		{
			flag=1;
			ans=now.step;
			return;
		}
		if(now.step+num[now.step]<=n&&!vis[now.step+num[now.step]])
		{
			q.push({now.step+num[now.step],now.step+1});
			vis[now.step+num[now.step]]=1;
		}
		if(now.step-num[now.step]>=1&&!vis[now.step-num[now.step]])
		{
			q.push({now.step-num[now.step],now.step+1});
			vis[now.step-num[now.step]]=1;
		}
	}
}
int main()
{
	cin>>n>>a>>b;
	for(int i=1;i<=n;i++) cin>>num[i];
	q.push({a,0});
	vis[a]=1;
	dfs();
	if(flag) cout<<ans<<endl;
	else cout<<"-1"<<endl;
	return 0;
}
2024/6/1 21:14
加载中...