Lang:G++
Edit12345678910111213141516171819202122232425262728293031#include<cstdio>#include<algorithm>#include<queue>#include<cmath>using namespace std;const int maxn = 505;int h, w;char mat[maxn][maxn];int vis[maxn][maxn];int mCnt = 0, sCnt = 0;int dir[8][2] = { {-1, 0}, {0,-1}, {1, 0}, {0, 1}, {-1, -1}, {-1, 1}, {1, -1}, {1, 1} };void bfs0(int x, int y) {queue<int> que;que.push(x * w + y);int lastU = -1, lastV = -1;int maxH = 0, minH = 500, maxW = 0, minW = 500;while (!que.empty()) {int u = que.front();lastU = u;que.pop();x = u / w;y = u % w;maxH = max(maxH, x);minH = min(minH, x);maxW = max(maxW, y);minW = min(minW, y);for (int i = 0; i < 8; ++i) {int newX = x + dir[i][0];