MLE
查看原帖
MLE
898170
weiyichen1016楼主2024/5/28 20:24
#include<bits/stdc++.h>
using namespace std;

char a[600][600];
bool m[600][600];
bool v[600][600];
bool v2[600][600];
int x, y;

void dfs(int xi, int yi) {
	if (xi < 1 || xi > x || yi < 1 || yi > y || m[xi][yi]) return;
	v[xi][yi] = true;
	dfs(xi + 1, yi);
	dfs(xi - 1, yi);
	dfs(xi, yi + 1);
	dfs(xi, yi - 1);
}

void d2(int xi, int yj) {
	if (xi < 1 || xi > x || yj < 1 || yj > y || m[xi][yj] || v[xi][yj]) return;
	v2[xi][yj] = true;
	dfs(xi + 1, yj);
	dfs(xi - 1, yj);
	dfs(xi, yj + 1);
	dfs(xi, yj - 1);
}

int main() {
	int ans = 0;
	cin >> x >> y;
	for (int i = 1; i <= x; i++)
		for (int j = 1; j <= y; j++) {
			char ch;
			cin >> ch;
			a[i][j] = ch;
			if (ch == '*') m[i][j] = true, v[i][j] = true;
		}
	dfs(0, 0);

	for (int i = 1; i <= x; i++) {
		for (int j = 1; j <= y; j++) {
			if (!v[i][j] && !v2[i][j]) {
				ans++;
				d2(i, j);
			}
		}
	}
	cout << ans;
}
2024/5/28 20:24
加载中...