BFS MLE HELP 30pts(悬二关)

P1135 奇怪的电梯

~~甚至还隐藏了一个TLE~~
by kevinZ99 @ 2024-02-06 10:32:06


```cpp #include<iostream> #include<algorithm> #include<queue> using namespace std; queue<pair<int,int> > q; int Up[201],Down[201]; bool vis[201]; int n,a,b,k; int bfs() { int x,y; while(!q.empty()) { x=q.front().first; y=q.front().second; q.pop(); if(x==b) return y; if(Up[x]<=n and !vis[Up[x]]) {vis[Up[x]] = 1; q.push({Up[x],y+1});} if(Down[x]>0 and !vis[Down[x]]) {vis[Down[x]] = 1; q.push({Down[x],y+1});} } return -1; } int main() { ios::sync_with_stdio(0); cin >> n >> a >> b; for(int i=1;i<=n;i++) { cin >> k; Up[i]=i+k; Down[i]=i-k; } q.push({a,0}); vis[a]=1; cout <<bfs(); return 0; } ```
by xiyihan @ 2024-02-06 10:38:57


@[jmsyang0808](/user/1202695) 改好了,需要加一个vis数组以防重复访问
by xiyihan @ 2024-02-06 10:39:36


@[xiyihan](/user/152651) thx 会关 问题已解决,此帖结。
by jmsyang0808 @ 2024-02-06 10:52:21


|