#include using namespace std; int m, n; int matriz[100][100]; bool marcados[100][100]; int melhor; int total; int caminhos; void saltar(int x, int y) { if (marcados[x][y]) return; marcados[x][y] = true; total += matriz[x][y]; if (x == m - 1 && y == n - 1) { caminhos++; if (melhor == -1 || total < melhor) melhor = total; } else { if (x != 0) saltar(x - 1, y); if (x != m - 1) saltar(x + 1, y); if (y != 0) saltar(x, y - 1); if (y != n - 1) saltar(x, y + 1); } marcados[x][y] = false; total -= matriz[x][y]; } int main() { int i, j; cin >> m >> n; for (i = 0; i < m; i++) { for (j = 0; j < n; j++) { cin >> matriz[i][j]; marcados[i][j] = false; } } melhor = -1; total = 0; caminhos = 0; saltar(0, 0); cout << melhor << "\n"; cout << "Caminhos percorridos: " << caminhos << "\n"; return 0; }