社区讨论
30pts求条
P1135奇怪的电梯参与者 1已保存回复 0
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @miojegzx
- 此快照首次捕获于
- 2025/12/02 20:11 3 个月前
- 此快照最后确认于
- 2025/12/02 20:31 3 个月前
CPP
#include<bits/stdc++.h>
using namespace std;
template<typename T>
class my_queue
{
public:
T q[2009];
int f,r;
void push(T val)
{
q[++r]=val;
}
T pop_and_get()
{
return q[++f];
}
int size()
{
return r-f;
}
};
bool flag[2009];
int a[2009];
struct ttt
{
int x,dep;
};
my_queue<ttt>que;
int main()
{
int n,A,b;
cin>>n>>A>>b;
for(int i=1;i<=n;i++)cin>>a[i];
//开关没用
que.push({A,0});
flag[A]=1;
while(que.size())
{
ttt tmp=que.pop_and_get();
if(tmp.x==b){cout<<tmp.dep;return 0;}
//插入tmp-a[tmp]
if(tmp.x-a[tmp.x]>0&&!flag[tmp.x-a[tmp.x]]){que.push({tmp.x-a[tmp.x],tmp.x+1});flag[tmp.x-a[tmp.x]]=1;}
//插入tmp+a[tmp]
if(tmp.x+a[tmp.x]<=n&&!flag[tmp.x+a[tmp.x]]){que.push({tmp.x+a[tmp.x],tmp.x+1});flag[tmp.x+a[tmp.x]]=1;}
}
cout<<-1;
}
回复
共 0 条回复,欢迎继续交流。
正在加载回复...