Submission

Status:

PPPPPPPPPP

Subtask/Task Score:

100/100

Score: 100

User: faofao

Problemset: หุ่นพัง

Language: cpp

Time: 0.002 second

Submitted On: 2026-03-16 09:54:22

#include <bits/stdc++.h>
using namespace std;

const int mxN = 31 ;
int n;
int cnt = 0 ;
char grid[mxN][mxN] ;
bool vis[mxN][mxN] ;

int di[] = {0,-1} ;
int dj[] = {-1,0} ;

void dfs(int i,int j){
    if(vis[i][j] || grid[i][j] == 'X') return ;
    vis[i][j] = 1;
    for(int k=0 ; k<2 ; k++){
        int ni = i+di[k] ;
        int nj = j+dj[k] ;
        if(vis[ni][nj] || ni<0 || nj<0 || ni>=n || nj>=n) continue;
        dfs(ni,nj) ;
    }
}

int main(){
    ios::sync_with_stdio(0),cin.tie(0) ;
    cin >> n ;
    for(int i=0 ; i<n ; i++){
        string s ; cin >> s; 
        for(int j=0 ; j<n ; j++){
            grid[i][j] = s[j] ;
        }
    }
    dfs(n-1,n-1) ;
    for(int i=0 ; i<n ; i++){
        for(int j=0 ; j<n ; j++){
            if(vis[i][j]) cnt++ ;
            // cout << vis[i][j] << " " ;
        }
        // cout << "\n" ;
    }
    cout << cnt ;
}