2025-08-03 10:52:01 +09:00

38 lines
1.1 KiB
TypeScript

export {};
const input: string[] = require("fs").readFileSync(0,"utf8").toString().trim().split('\n');
const [N, M]:number[] = input[0].split(' ').map(Number);
let Meero:number[][] = Array.from({length: N+1}, () => new Array(M+1).fill(0));
let visited:number[][] = Array.from({length: N+1}, () => new Array(M+1).fill(0));
let queueX: number[] = []
let queueY: number[] = []
const dx:number[] = [1,-1,0,0];
const dy:number[] = [0,0,1,-1];
Meero.forEach((_,i,arr) => {
if(i!==0) {
arr[i] = ('0'+input[i]).split("").map(Number);
}
});
queueX.push(1);
queueY.push(1);
visited[1][1] = 1;
while(queueX.length!==0){
const [cx, cy]:number[] = [queueX.shift()!, queueY.shift()!];
if(cx===M && cy===N){
console.log(visited[N][M]);
break;
}
for(let i=0; i<4; i++){
const[nx, ny] = [cx + dx[i], cy + dy[i]];
const goPossible: boolean = 0<nx && nx<=M && 0<ny && ny<=N && Meero[ny][nx]===1 && visited[ny][nx]===0;
if(goPossible){
queueX.push(nx);
queueY.push(ny);
visited[ny][nx] = visited[cy][cx] + 1;
}
}
}