Submission
Status:
PPPPPPPPPP
Subtask/Task Score:
100/100
Score: 100
User: Bestzu
Problemset: หุ่นพัง
Language: cpp
Time: 0.003 second
Submitted On: 2025-10-17 12:42:52
#include <bits/stdc++.h>
#define endl '\n'
using namespace std;
int n;
const int N = 40;
vector<vector<bool>> visited(N, vector<bool>(N, false));
vector<vector<char>> a(N, vector<char>(N));
void dfs(int si, int sj) {
if(si < 0 || si >= n || sj < 0 || sj >= n || visited[si][sj]) return;
if(a[si][sj] == 'X') return;
visited[si][sj] = true;
//right
dfs(si, sj+1);
//down
dfs(si+1, sj);
}
void reset(vector<vector<bool>> &a) {
for(int i = 0; i < n; i++) {
for(int j = 0; j < n; j++) {
a[i][j] = false;
}
}
}
int main() {
ios::sync_with_stdio(false); cin.tie(0);
cin >> n;
for(int i = 0; i < n; i++) {
for(int j = 0; j < n; j++) {
cin >> a[i][j];
}
}
int ans = 0;
for(int i = 0; i < n; i++) {
for(int j = 0; j < n; j++) {
if(a[i][j] == '.') {
reset(visited);
dfs(i, j);
if(visited[n-1][n-1]) ans++;
}
}
}
cout << ans << endl;
return 0;
}