Răspuns :
Răspuns:
Sper sa intelegi..se foloseste metoda de umplere (fill)
Explicație:
#include<fstream>
using namespace std;
ifstream fin("parcela.in");
ofstream fout ("parcela.out");
int a[101][101],n,m,i,j,nr=1,v[100];
void Fill1(int a[101][101],int n,int m,int i,int j,int nr)
{
a[i][j]=nr;
if(a[i+1][j]==1) Fill1(a,n,m,i+1,j,nr);
if(a[i][j+1]==1) Fill1(a,n,m,i,j+1,nr);
if(a[i-1][j]==1) Fill1(a,n,m,i-1,j,nr);
if(a[i][j-1]==1) Fill1(a,n,m,i,j-1,nr);
}
void Fill2(int a[101][101],int n,int m,int i,int j,int nr,int &arie)
{
arie++;
a[i][j]=1;
if(a[i+1][j]==nr) Fill2(a,n,m,i+1,j,nr,arie);
if(a[i][j+1]==nr) Fill2(a,n,m,i,j+1,nr,arie);
if(a[i-1][j]==nr) Fill2(a,n,m,i-1,j,nr,arie);
if(a[i][j-1]==nr) Fill2(a,n,m,i,j-1,nr,arie);
}
int main()
{
fin>>n>>m;
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
fin>>a[i][j];
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
if(a[i][j]==1)
{
nr++;
Fill1(a,n,m,i,j,nr);
}
fout<<nr-1<<" ";
nr=2;
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
if(a[i][j]==nr)
{
int arie=0;
Fill2(a,n,m,i,j,nr,arie);
v[nr-1]=arie;
nr++;
}
int amax=0;
for(i=1;i<=nr-1;i++)
if(v[i]>amax)
amax=v[i];
fout<<amax<<" ";
for(i=1;i<=nr-1;i++)
if(v[i]==amax)
{fout<<i;
return 0;}
}