Pagini recente » Cod sursa (job #102398) | Cod sursa (job #2052540) | Cod sursa (job #2919745) | Cod sursa (job #2280946) | Cod sursa (job #1336051)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("ferma.in");
ofstream g("ferma.out");
int op,m,n,z[410][410],cult[260];
char v[410][410];
bool OK(int x, int y){
if(x < 1 || y < 1 || x > m || y > n)
return false;
if(z[x][y]!=0)
return false;
return true;
}
void Fill(int x, int y,char a,int k){
if(OK(x+1,y) && v[x+1][y]==a){
z[x+1][y]=k;
Fill(x+1,y,a,k);}
if(OK(x,y+1) && v[x][y+1]==a){
z[x][y+1]=k;
Fill(x,y+1,a,k);
}
if(OK(x-1,y) && v[x-1][y]==a){
z[x-1][y]=k;
Fill(x-1,y,a,k);
}
if(OK(x,y-1) && v[x][y-1]==a){
z[x][y-1]=k;
Fill(x,y-1,a,k);
}
}
int main(){
f>>op;
f>>m>>n;
int i=1,j=1;
while( !f.eof() ){
f>>v[i][j];j++;
if(j==n+1){j=1;i++;}
}
int k=0;char lit;
for(i=1;i<=m;i++){
for(j=1;j<=n;j++){
if(z[i][j]==0){
lit=v[i][j];
k++;z[i][j]=k;
Fill(i,j,lit,k);
}
}}
int max=1,max2=1;
for(i=1;i<=m;i++){
for(j=1;j<=n;j++){
cult[z[i][j]]++;
if(z[i][j]>max) max=z[i][j];
}}
for(i=1;i<=max;i++)
if(cult[i]>max2) max2=cult[i];
g<<max2;
return 0;}