#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; int dy[] = {-1, 0, 1, 0}; int dx[] = {0, 1, 0, -1}; bool dfs(int y, int x, const vector& s, vector >& index) { int h = s.size(); int w = s[0].size(); for(int i=0; i<4; ++i){ int y2 = y + dy[i]; int x2 = x + dx[i]; if(y2 < 0 || y2 >= h || x2 < 0 || x2 >= w || s[y][x] != s[y2][x2]) continue; if(index[y2][x2] == -1){ index[y2][x2] = index[y][x] + 1; if(dfs(y2, x2, s, index)) return true; } else if(index[y][x] - index[y2][x2] >= 3){ return true; } } return false; } int main() { int w, h; cin >> w >> h; vector s(h, string(w, ' ')); for(int i=0; i> s[i][j]; } } vector > index(h, vector(w, -1)); for(int y=0; y