测试样例过了,下载的第一个测试点也没问题,但是0分全是RE?
import java.util.Arrays;
import java.util.LinkedList;
import java.util.Queue;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int n = scan.nextInt();
int a = scan.nextInt();
int b = scan.nextInt();
int[] num = new int[n+1];
int[] mark = new int[n+1];
mark[a] = 1;
for (int i = 1; i <= n; i++){
num[i] = scan.nextInt();
}
Queue<Pair> q = new LinkedList<>();
q.offer(new Pair(0,a));
while (!q.isEmpty()){
Pair p = q.peek();
if (p.getIndex()==b){
System.out.println(p.getAns());
return;
}
if (p.getIndex()+num[p.getIndex()]<=n&&mark[p.getIndex()+num[p.getIndex()]]==0){
q.offer(new Pair(p.getAns()+1,p.getIndex()+num[p.getIndex()]));
mark[p.getIndex()+num[p.getIndex()]] = 1;
}
if (p.getIndex()-num[p.getIndex()]>=1&&mark[p.getIndex()-num[p.getIndex()]]==0){
q.offer(new Pair(p.getAns()+1,p.getIndex()-num[p.getIndex()]));
mark[p.getIndex()-num[p.getIndex()]] = 1;
}
q.poll();
}
System.out.println(-1);
}
static class Pair {
private int ans;
private int index;
public int getAns() {
return ans;
}
public void setAns(int ans) {
this.ans = ans;
}
public int getIndex() {
return index;
}
public void setIndex(int index) {
this.index = index;
}
public Pair(int ans, int index) {
this.ans = ans;
this.index = index;
}
}
}