Submission

Status:

PPPPPPPPPP

Subtask/Task Score:

100/100

Score: 100

User: Test

Problemset: หุ่นพัง

Language: cpp

Time: 0.004 second

Submitted On: 2026-01-15 14:11:47

/*
maze1
5
..X..
..X..
...XX
.XX..
.....
output:
11 <-- use only R,D to (4,4) have 11 start position
*/
#include <bits/stdc++.h>
using namespace std;
int M,N;
vector<string> mp;
vector<vector<bool>> ck;
int ct = 0;
bool f(int i,int j){
    if(i < 0 || j < 0 || i >= M || j >= N) return false;
    if(mp[i][j] == 'X') return false;
    if(i==M-1 && j==N-1) return true;
    if(ck[i][j] == true) return false;
    ck[i][j] = true;
    return f(i+1,j) || f(i,j+1);
}

int main(){
    cin >> M;
    N = M;
    for(int i = 0; i < M; i++) {
        string row;
        cin >> row;
        mp.push_back(row);
    }

    ck.resize(M, vector<bool>(N, false));
    for(int i=0;i<M;i++){
        for(int j=0;j<N;j++){
            ck.assign(M, vector<bool>(N,false));
            if(f(i,j)){
                ct+=1;
            }
        }
    }
    cout << ct;
}