Submission

Status:

PPPPPPPPPP

Subtask/Task Score:

100/100

Score: 100

User: kavin8888

Problemset: หุ่นพัง

Language: cpp

Time: 0.003 second

Submitted On: 2025-11-11 11:44:29

#include<bits/stdc++.h>
using namespace std;
#define MAX_N 30
int n,ans=0;
vector<vector<char>> board(MAX_N,vector<char>(MAX_N));
vector<vector<bool>> vis(MAX_N,vector<bool> (MAX_N,false));
void reset(vector<vector<bool>> &v) {
  for(int i=0;i<n;i++) {
    for(int j=0;j<n;j++) {
      v[i][j]=false;
    }
  }
}
bool valid(int x,int y) {
  return 0<=x && x<n && 0<=y && y<n;
}
void dfs(int x, int y) {
  if (board[x][y] == 'X') return;
  vis[x][y]=true;
  if(valid(x+1,y) && !vis[x+1][y] && board[x+1][y] != 'X') {
    dfs(x+1,y);
  }
  if(valid(x,y+1) && !vis[x][y+1] && board[x][y+1] != 'X') {
    dfs(x,y+1);
  }
}
int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    cin>>n;
    for(int i=0;i<n;i++) {
      for(int j=0;j<n;j++) {
        cin>>board[i][j];
      }
    }
   for(int i=0;i<n;i++) {
     for(int j=0;j<n;j++) {
       reset(vis);
       dfs(i,j);
       if(vis[n-1][n-1]) ans++;
     }
   }
   cout<<ans<<'\n';
   return 0;
}