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;
}