#include <iostream> #include <fstream> #include <queue> using namespace std; int a[401][401]; char c[401][401]; int n,i,m; queue< pair<int, int> > q; pair<int, int> punct; int ok(int i,int j,int n,int m) { if(i>=0&&i<n&&j>=0&&j<m) return 1; return 0; } void citeste(int &n,int &m,int &type) { //ifstream f("run.in"); int i,j; cin>>type; cin>>n>>m; for(i=0;i<n;i++) for(j=0;j<m;j++) cin>>c[i][j]; } void rezolva(int xi,int yi, char col,int &maxi) { q.push(make_pair(xi,yi)); c[xi][yi]='.'; int nr = 0; while(!q.empty()) { punct = q.front(); int px = punct.first; int py = punct.second; if(ok(px+1,py,n,m) && c[px+1][py]==col) { c[px+1][py] = '.'; q.push(make_pair(px+1,py)); nr++; } if(ok(px,py+1,n,m) && c[px][py+1]==col) { c[px][py+1] = '.'; q.push(make_pair(px,py+1)); nr++; } if(ok(px,py-1,n,m) && c[px][py-1]==col) { c[px][py-1] = '.'; q.push(make_pair(px,py-1)); nr++; } if(ok(px-1,py,n,m) && c[px-1][py]==col) { c[px-1][py] = '.'; q.push(make_pair(px-1,py)); nr++; } q.pop(); } if(nr>maxi) maxi = nr; } int main() { int tip,j,maxim=0; citeste(n,m,tip); if(tip==1) { for(i=0;i<n;i++) for(j=0;j<m;j++) if(c[i][j]!='.') rezolva(i,j,c[i][j],maxim); } cout<<maxim+1; return 0; }