蓝桥杯 勇士与地雷 运行错误

一直都是运行错误,测试的结果都正确的
帮忙看看是哪里的错误
下面是提交的代码


import java.util.LinkedList;
import java.util.Queue;
import java.util.Scanner;

public class Main{
    private static int n;
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        n = sc.nextInt();
        String mine[] = new String[510]; //地雷
        int dis[][] = new int[510][510]; //各个点到0,0点的最小距离
        for (int i = 0; i < n; i++) {
            mine[i] = sc.next();
        }

        bfs(0,0,mine,dis);
        int x,y,z;
        while(true){
            x = sc.nextInt();
            y = sc.nextInt();
            z = sc.nextInt();
            if(x == 0 && y == 0 )
                System.out.println(1);
            else if(dis[x][y] <= z && dis[x][y] !=0 )
                System.out.println(1);
            else
                System.out.println(-1);
        }
    }

    private static void bfs(int x, int y,String mine[],int dis[][]) {
        Queue<Node> queue = new LinkedList<>();
        queue.add(new Node(0,0));
        dis[x][y] = 0;
        int dx[]={-1,0,1,0};
        int dy[]={0,1,0,-1};
        while(!queue.isEmpty()){
            Node temp = queue.remove();
            for (int i = 0; i < 4; i++) {
                int nx,ny;
                nx = temp.x + dx[i];
                ny = temp.y + dy[i];
                if(nx<0 || nx> n-1 || ny < 0 || ny> n-1) continue;
                if(dis[nx][ny]!=0)continue;
                if(mine[nx].charAt(ny)=='*')continue;
                dis[nx][ny] = dis[temp.x][temp.y]+1;
                queue.add(new Node(nx,ny));
            }
        }
    }
    static class Node{
        int x;
        int y;
        public Node(int x, int y) {
            this.x = x;
            this.y = y;
        }
    }
}

static class Node{
改为普通类,放在类的外部。
class Node{

import java.util.LinkedList;
import java.util.Queue;
import java.util.Scanner;
 
public class Main{
    private static int n;
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        n = sc.nextInt();
        String mine[] = new String[510]; //地雷
        int dis[][] = new int[510][510]; //各个点到0,0点的最小距离
        for (int i = 0; i < n; i++) {
            mine[i] = sc.next();
        }
 
        bfs(0,0,mine,dis);
        int x,y,z;
        while(true){
            x = sc.nextInt();
            y = sc.nextInt();
            z = sc.nextInt();
            if(x == 0 && y == 0 )
                System.out.println(1);
            else if(dis[x][y] <= z && dis[x][y] !=0 )
                System.out.println(1);
            else
                System.out.println(-1);
        }
    }
 
    private static void bfs(int x, int y,String mine[],int dis[][]) {
        Queue<Node> queue = new LinkedList<>();
        queue.add(new Node(0,0));
        dis[x][y] = 0;
        int dx[]={-1,0,1,0};
        int dy[]={0,1,0,-1};
        while(!queue.isEmpty()){
            Node temp = queue.remove();
            for (int i = 0; i < 4; i++) {
                int nx,ny;
                nx = temp.x + dx[i];
                ny = temp.y + dy[i];
                if(nx<0 || nx> n-1 || ny < 0 || ny> n-1) continue;
                if(dis[nx][ny]!=0)continue;
                if(mine[nx].charAt(ny)=='*')continue;
                dis[nx][ny] = dis[temp.x][temp.y]+1;
                queue.add(new Node(nx,ny));
            }
        }
    }
}
class Node{
        int x;
        int y;
        public Node(int x, int y) {
            this.x = x;
            this.y = y;
        }
    }