90分求助,#3WA(因为数据中有0)
查看原帖
90分求助,#3WA(因为数据中有0)
455643
claunflsh楼主2021/8/3 15:29
#include<iostream>
#include<queue>
using namespace std;

struct elevator
{
	int floor,cnt;
};

queue <elevator> q;
elevator now;
int n,a,b,k[505],visited[505]={},i,coefficient=-1,TargetFloor;

int main()
{
	cin>>n>>a>>b;
	
	for(i=1;i<=n;i++)
	{
		cin>>k[i]; 
	}
	
	q.push((elevator){a,0});
	visited[a]=1;
	
	while(q.empty()==false)
	{
		now=q.front();
		q.pop();
		
		if(now.floor==b)
		{
			break;
		}
		
		TargetFloor=now.floor+k[now.floor];
		if(TargetFloor>1&&TargetFloor<=n&&visited[TargetFloor]==0)
		{
			q.push((elevator){TargetFloor,now.cnt+1});
			visited[TargetFloor]=1;
		}
		TargetFloor=now.floor+k[now.floor]*coefficient;
		if(TargetFloor>1&&TargetFloor<=n&&visited[TargetFloor]==0)
		{
			q.push((elevator){TargetFloor,now.cnt+1});
			visited[TargetFloor]=1;
		}
	}
	
	if(now.floor==b)
	{
		cout<<now.cnt<<endl;
	}
	else
	{
		cout<<-1<<endl;
	}
	
	return 0;
}
2021/8/3 15:29
加载中...