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:39:59
#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;
}