using
System;
class
GFG{
static
int
[,] direction = { { -1, 0 }, { 0, 1 },
{ 0, -1 }, { 1, 0 } };
static
bool
dfs(
int
[,]matrix,
int
i,
int
j,
int
N,
int
M)
{
if
(i == N - 1 && j == M - 1)
{
return
true
;
}
matrix[i, j] = 1;
for
(
int
k = 0; k < 4; k++)
{
int
newX = i + direction[k, 0];
int
newY = j + direction[k, 1];
if
(newX >= 0 && newX < N && newY >= 0 &&
newY < M && matrix[newX, newY] == 0)
{
if
(dfs(matrix, newX, newY, N, M))
{
return
true
;
}
}
}
return
false
;
}
static
int
solve(
int
[,] matrix)
{
int
N = matrix.GetLength(0);
int
M = matrix.GetLength(1);
if
(!dfs(matrix, 0, 0, N, M))
{
return
0;
}
if
(!dfs(matrix, 0, 0, N, M))
{
return
1;
}
return
2;
}
public
static
void
Main(String[] args)
{
int
[,] mat = { { 0, 1, 0, 0 },
{ 0, 1, 0, 0 },
{ 0, 0, 0, 0 } };
Console.WriteLine(solve(mat));
}
}