为什么只有60分呢?
#include <bits/stdc++.h>
using namespace std;
int n, m, ans;
int x[5] = {0, -1, 1, 0, 0};
int y[5] = {-1, 0, 0, 1, 0};
char c[1010][1010];
queue<int> a, b;
int main() {
cin >> n >> m;
for (int i = 2; i <= n + 1; i ++) {
for (int j = 2; j <= m + 1; j ++) {
cin >> c[i][j];
if (c[i][j] == '#') {
a.push(i);
b.push(j);
}
}
}
int s = 0;
for (int i = 2; i <= n + 1; i ++) {
for (int j = 2; j <= m + 1; j ++) {
if (c[i][j] == '.') {
bool flag = true;
for (int k = 0; k < 5; k ++) {
if (c[i + x[k]][j + y[k]] == '#') {
flag = false;
break;
}
}
s += flag;
}
}
}
while (a.size()) {
c[a.front()][b.front()] = '.';
int f = 1;
for (int i = 0; i < 4; i ++) {
bool flag = true;
for (int j = 0; j < 5; j ++) {
if (c[a.front() + x[i] + x[j]][b.front() + y[i] + y[j]] == '#') {
flag = false;
break;
}
}
f += flag;
}
ans = max(ans, f);
c[a.front()][b.front()] = '#';
a.pop(), b.pop();
}
cout << s + ans << endl;
return 0;
}