/* Look at me! Look at me! Look at how large the monster inside me has become! */ #include #include #include #include #include #define FIT(a,b) for(vector::iterator a=b.begin();a!=b.end();a++) #define FITP(a,b) for(vector >::iterator a=b.begin();a!=b.end();a++) #define RIT(a,b) for(vector::reverse_iterator a=b.end();a!=b.begin();++a) #include #define ROF(a,b,c) for(int a=b;a>=c;--a) #include #include #define FOR(a,b,c) for(int a=b;a<=c;++a) #define REP(a,b) for(register int a=0;a #include #include #include #include #include #define f cin #define g cout #include #define debug cerr<<"OK"; #define pii pair #define mp make_pair #define pb push_back #define fi first #define se second #define ll long long #define ull unsigned long long #define M 1000000007 #define mod 666013 #define N 1010 #define SQR 350 #define inf 1<<30 #define div pula using namespace std; int dx[]={0,0,0,1,-1}; int dy[]={0,1,-1,0,0}; char s[N][N],col; stack sx,sy; queue qx,qy; int t,vi[N*N],viz[N][N],tip,stx[N],xs,ys,car,sty[N],cmax,n,m,dim[N][N],cs,k; void bfs(int x,int y) { cs=1; sx.push(x); sy.push(y); qx.push(x); qy.push(y); viz[x][y]=k; while(!qx.empty()) { x=qx.front(); y=qy.front(); qx.pop(); qy.pop(); FOR(i,1,4) { int xc=x+dx[i]; int yc=y+dy[i]; if(xc<1||yc<1||xc>n||yc>m||viz[xc][yc]||s[xc][yc]!=s[x][y]) continue; cs++; qx.push(xc); qy.push(yc); sx.push(xc); sy.push(yc); viz[xc][yc]=k; } } while(!sx.empty()) { x=sx.top(); y=sy.top(); sx.pop(); sy.pop(); dim[x][y]=cs; } } int main () { #ifndef ONLINE_JUDGE freopen("a.in","r",stdin); freopen("a.out","w",stdout); #endif f>>tip; f>>n>>m; FOR(i,1,n) f>>(s[i]+1); FOR(i,1,n) FOR(j,1,m) if(!viz[i][j]) { ++k; bfs(i,j); if(cs>cmax) cmax=cs; } if(tip==1) { g<n||y>m||vi[viz[x][y]]) continue; stx[++t]=x; sty[t]=y; vi[viz[x][y]]=1; } FOR(l,1,t) FOR(r,l+1,t) if(s[stx[l]][sty[l]]>s[stx[r]][sty[r]]) { swap(stx[l],stx[r]); swap(sty[l],sty[r]); } FOR(l,1,t) { if(s[i][j]==s[stx[l]][sty[l]]) continue; car=1; FOR(k,1,t) if(s[stx[k]][sty[k]]==s[stx[l]][sty[l]]) car+=dim[stx[k]][sty[k]]; if(car>cmax) { cmax=car; xs=i; ys=j; col=s[stx[l]][sty[l]]; } } FOR(l,1,t) vi[viz[stx[l]][sty[l]]]=0; } g<