結果

問題 No.3504 Insert Maze
コンテスト
ユーザー Atake-MKU
提出日時 2026-04-19 12:14:00
言語 JavaScript
(node v25.8.2)
コンパイル:
true
実行:
node _filename_ ONLINE_JUDGE
結果
WA  
実行時間 -
コード長 1,403 bytes
記録
記録タグの例:
初AC ショートコード 純ショートコード 純主流ショートコード 最速実行時間
コンパイル時間 61 ms
コンパイル使用メモリ 6,528 KB
実行使用メモリ 121,656 KB
最終ジャッジ日時 2026-04-19 12:14:20
合計ジャッジ時間 14,181 ms
ジャッジサーバーID
(参考情報)
judge2_0 / judge3_0
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 3
other AC * 84 WA * 1
権限があれば一括ダウンロードができます

ソースコード

diff #
raw source code

function Main(input) {
    input = input.trim().split("\n");
    const [H, W] = input.shift().split(" ").map(Number);
    const C = input.map(e => e.trim());
    let visited = [];
    for (let i = 0; i < H; i++) visited.push([...new Array(W).fill(0)]);
    // S:1, G:-1
    function dfs(nh, nw, a) {
        if (nh + a >= 0 && nh + a < H && visited[nh + a][nw] === 0&& C[nh + a][nw] !== "#") {
            visited[nh + a][nw] = a;
            dfs(nh + a, nw, a);
        }
        if (nw + a >= 0 && nw + a < W && visited[nh][nw + a] === 0&& C[nh][nw + a] !== "#") {
            visited[nh][nw + a] = a;
            dfs(nh, nw + a, a);
        }
    }
    visited[0][0] = 1;
    dfs(0, 0, 1);

    if (visited[H - 1][W - 1]) {
        console.log(H + W - 2);
        return;
    }
    visited[H - 1][W - 1] = -1;
    dfs(H - 1, W - 1, -1);

    let mhs = 0, mws = 0, mhg = H - 1, mwg = W - 1;

    for (let i = 0; i < H; i++) {
        for (let j = 0; j < W; j++) {
            if (visited[i][j] === 1) {
                if (mhs < i) mhs = i;
                if (mws < j) mws = j;
            }
            if (visited[i][j] === -1) {
                if (mhg > i) mhg = i;
                if (mwg > j) mwg = j;
            }
        }
    }

    if (mhg - mhs < 1 || mwg - mws < 1) {
        console.log(H + W - 1);
    } else {
        console.log(H + W);
    }
}
Main(require("fs").readFileSync(0)+"")
0