全RE?
查看原帖
全RE?
1215425
cFBBC楼主2024/4/3 21:07
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;
        }
    }
}

2024/4/3 21:07
加载中...