#include <bits/stdc++.h>
using namespace std;
#define LL int64_t
constexpr int N = 1e5 + 5;
const
int posX[] = {-1, 1, 0, 0};
int posY[] = {0, 0, -1, 1};
int n, m;
char maze[1005][1005];
bool f[1005][1005];
int b[1005][1005];
int dfs(int x, int y) {
if(f[x][y]) return 0;
f[x][y] = true;
if(b[x][y] == -1) {
for(int i = 0; i < 4; i++) {
if(x + posX[i] >= 1 && x + posX[i] <= n && y + posY[i] >= 1 && y + posY[i] <= n && maze[x][y] != maze[x + posX[i]][y + posY[i]]) {
if(b[x + posX[i]][y + posY[i]] == -1) b[x + posX[i]][y + posY[i]] = dfs(x + posX[i], y + posY[i]);
b[x][y] = max(b[x][y], b[x + posX[i]][y + posY[i]]);
}
}
}
return b[x][y] + 1;
}
// #define FILE_IO
int main(void) {
#ifdef FILE_IO
ifstream finput("_____.in");
ofstream fprint("_____.out");
#endif
cin >> n >> m;
for(int i = 1; i <= n; i++)
for(int j = 1; j <= n; j++)
cin >> maze[i][j];
while(m--) {
memset(b, -1, sizeof(b));
int x, y;
cin >> x >> y;
int ans = dfs(x, y);
cout << ans << '\n';
memset(f, false, sizeof(f));
}
// system("pause");
return 0;
}
样例过了,七个 WA 四个 TLE。