38 lines
1.1 KiB
TypeScript
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;
|
|
}
|
|
}
|
|
} |