社区讨论
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 条回复,欢迎继续交流。
正在加载回复...