社区讨论

30pts c++

P1135奇怪的电梯参与者 4已保存回复 13

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
13 条
当前快照
1 份
快照标识符
@m2ypl4kr
此快照首次捕获于
2024/11/01 20:26
去年
此快照最后确认于
2025/11/04 23:39
4 个月前
查看原帖
CPP
#include<bits/stdc++.h>
using namespace std;
struct dt{
	int a;//楼层
	int c;//可上或下的数
};
queue<dt> q;
int vis[205]={0};
int main(){
	dt sz[205]={};
	int n,be,en;
	cin>>n>>be>>en;
	for(int i=1;i<n;i++){
		cin>>sz[i].c;
		sz[i].a=i;
	}
	int ans=0;
	bool flag=0;
	q.push(sz[be]);
	if(be==en){
		cout<<0;
		return 0;
	}
	while(q.empty()!=true){
		if(q.front().a+q.front().c<=n&&vis[q.front().a+q.front().c]!=1){
			q.push(sz[q.front().a+q.front().c]);
			vis[q.front().a+q.front().c]=1;
			if(q.front().a+q.front().c==en){
				//cout<<"god like!"<<endl;
				flag=1;
				break;
			}
		}
		if(q.front().a-q.front().c>=1&&vis[q.front().a-q.front().c]!=1){
			q.push(sz[q.front().a-q.front().c]);
			vis[q.front().a-q.front().c]=1;
			if(q.front().a-q.front().c==en){
				//cout<<"god like!"<<endl;
				flag=1;
				break;
			}
		}
		q.pop();
		ans++;
	}
	if(flag==1)cout<<ans;
	else cout<<-1;//5 1 5
	return 0;//3 3 1 2 5
}

回复

13 条回复,欢迎继续交流。

正在加载回复...