[JAVA] MLE求助
查看原帖
[JAVA] MLE求助
1302893
Hugh_code楼主2024/3/16 20:59

这段代码 #2 和 #10 MLE 了........ 但是这个数据规模不应该啊....

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


public class Main {
    static int n;
    static int m;

    static char[][] g ;

    static Queue<Point> queue = new LinkedList<>();
    static int[] dx = {0, 1, 0, -1};
    static int[] dy = {1, 0, -1, 0};
    static int[][] distance ;

    static boolean bfs(int x1, int y1, int x2, int y2) {
        queue.add(new Point(x1, y1));
        distance[x1][y1] = 0;
        while (!queue.isEmpty()) {
            Point temp = queue.remove();
            for (int i = 0; i < 4; i++) {
                int a = temp.x + dx[i];
                int b = temp.y + dy[i];
                if (a < 1 || b < 1 || a > n || b > m) continue;
                if (distance[a][b] != 0) continue;
                if (g[a][b] == '#') continue;
                queue.add(new Point(a, b));
                distance[a][b] = distance[temp.x][temp.y] + 1;
                if (a == x2 && b == y2) return true;
            }
        }
        return false;
    }

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        n = sc.nextInt();
        m = sc.nextInt();
        distance = new int[n+2][m+2];
        g= new char[n+2][m+2];
        int x1 = 0;
        int y1 = 0;
        int x2 = 10;
        int y2 = 0;
        for (int i = 1; i <= n; i++) {
            String s = sc.next();
            for (int j = 1; j <= m; j++) {
                g[i][j] = s.charAt(j - 1);
                if (g[i][j] == 'm') {
                    x1 = i;
                    y1 = j;
                }
                if (g[i][j] == 'd') {
                    x2 = i;
                    y2 = j;
                }
            }

        }
        if (bfs(x1, y1, x2, y2))
            System.out.println(distance[x2][y2]);
        else System.out.println("No Way!");


    }
}
2024/3/16 20:59
加载中...