6 条题解
-
0
using namespace std; int n,a,b; int k[202]; bool visit[202]={0};//标记数组 int fuhao[3]={0,1,-1}; int flag,sum=0; int ceng=1,jie=0,xia=0;//当前层节点数量,当前层遍历到第几个节点 queue<int> q; void bfs() { q.push(a);//当前楼层进入队列 visit[a]=1; while(!q.empty()){ int c=q.front();//取出队列第一个元素 if(c!=b) q.pop(); else { flag=1;//输出次数 return; } for(int i=1;i<=2;i++) { int d=c+fuhao[i]*k[c]; if(d>=1 && d<=n && !visit[d]) { visit[d]=1; q.push(d); xia++;//记录下一层节点个数 } } jie++; //遍历的节点数加一,直到该层遍历完,层数加一 if(jie==ceng) { ceng=xia; xia=0; jie=0; sum++; } } return; } int main(){ cin>>n>>a>>b; for(int i=1;i<=n;i++){ cin>>k[i]; } flag=0; sum=0; bfs(); if(flag==0){ cout<<-1; } else cout<<sum; return 0; }
信息
- ID
- 85
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 7
- 标签
- 递交数
- 776
- 已通过
- 174
- 上传者