Pagini recente » Cod sursa (job #133836) | Cod sursa (job #2084667) | Cod sursa (job #18100) | Cod sursa (job #618922) | Cod sursa (job #2564952)
#include <iostream>
#include <fstream>
using namespace std;
#include <algorithm>
#include <fstream>
#include <iostream>
using namespace std;
ifstream fin("ferma3.in");
ofstream fout("ferma3.out");
const int NMAX = 405;
int N, M, V, numarul_zonei;
int matrice[NMAX][NMAX];
int matriceFill[NMAX][NMAX];
int di[4] = {-1, 0, 1, 0};
int dj[4] = {0, 1, 0, -1};
int d[NMAX*NMAX];
bool OK(int i, int j)
{
if(i < 1 || j < 1 || i > N || j > M)
return false;
if(matriceFill[i][j] != 0)
return false;
return true;
}
void algFill(int x, int y)
{
matriceFill[x][y] = numarul_zonei;
d[numarul_zonei]++;
for(int i = 0; i < 4; i++)
{
int noul_i = x + di[i];
int noul_j = y + dj[i];
if(OK(noul_i, noul_j) && matrice[x][y] == matrice[noul_i][noul_j])
algFill(noul_i, noul_j);
}
}
int main()
{
int maxim = 0;
fin >> V >> N >> M;
for(int i = 1; i <= N; i++)
{
for(int j = 1; j <= M; j++)
{
char c;
fin >> c;
matrice[i][j] = (int) c;
}
}
for(int i = 1; i <= N; i++)
{
for(int j = 1; j <= M; j++)
{
if(!matriceFill[i][j])
{
numarul_zonei++;
algFill(i, j);
if(maxim < d[numarul_zonei])
maxim = d[numarul_zonei];
}
}
}
if(V == 1)
fout << maxim << "\n";
}