94分有一个是RE,求大佬调!
查看原帖
94分有一个是RE,求大佬调!
1270998
limit_001楼主2024/12/14 20:08
#include<bits/stdc++.h>
using namespace std;
using ll=long long;
int q[500],vis[500];
int n,Start,End;

struct pos{
  int level;
  int steps;
};

void bfs(){
  pos cur,nex;
  cur.level=Start;
  cur.steps=0;
  queue<pos>qu;
  qu.push(cur);
  vis[Start]=1;
  while(!qu.empty()){
    cur=qu.front();
    qu.pop();
    if(cur.level==End){
      printf("%d\n",cur.steps);
      return;
    }
    // 正向跳跃
    nex.level=cur.level+q[cur.level];
    nex.steps=cur.steps+1;
    if(nex.steps<=n && vis[nex.level]==0){
      vis[nex.level]=1;
      qu.push(nex);
    }
    // 反向跳跃
    nex.level=cur.level-q[cur.level];
    nex.steps=cur.steps+1;
    if(nex.steps>=1 && vis[nex.level]==0){
      vis[nex.level]=1;
      qu.push(nex);
    }
  }
  printf("-1\n");
  return;
}

int main(){
  cin>>n>>Start>>End;
  memset(vis, 0, sizeof(vis)); // 初始化所有位置为未访问
  for(int i=1;i<=n;i++){
    cin>>q[i];
  }
  bfs();
  return 0;
}

就是有个点RE了,实在不知道为啥,求助!

2024/12/14 20:08
加载中...