1 条题解
-
0
思路
此题是一张有向图,我们先建图,再bfs,记得加上记忆化。
AC Code
#include<bits/stdc++.h> #define ll long long using namespace std; const ll N=205; ll n,A,B,ans=-1; struct node1{ ll up,down; }a[N]; struct node2{ ll x,cnt; }; bool flag[N]; queue<node2> q; void bfs(ll x){ q.push({x,0}); while(!q.empty()){ node2 p=q.front(); q.pop(); if(p.x<1||p.x>n||flag[p.x]) continue; flag[p.x]=1; if(p.x==B){ ans=p.cnt; return; } q.push({a[p.x].up,p.cnt+1}),q.push({a[p.x].down,p.cnt+1}); } } int main(){ scanf("%lld%lld%lld",&n,&A,&B); for(ll i=1,x;i<=n;i++) scanf("%lld",&x),a[i].up=i+x,a[i].down=i-x; bfs(A); printf("%lld",ans); return 0; }
- 1
信息
- ID
- 765
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 4
- 标签
- 递交数
- 114
- 已通过
- 56
- 上传者