Pagini recente » Cod sursa (job #591357) | Cod sursa (job #164118) | Cod sursa (job #3174236) | Cod sursa (job #293190) | Cod sursa (job #2522340)
#include <fstream>
using namespace std;
ifstream fin("castel.in");
ofstream fout("castel.out");
int di[]={-1,0,1,0};
int dj[]={0,1,0,-1};
int n,m;
int detl(int k)
{
int l=k/m+1;
if (k%m==0) l--;
return l;
}
int detc(int k)
{
int c=k%m;
if (k%m==0) c=m;
return c;
}
int detk(int l, int c)
{
int k=(l-1)*m;
k=k+c;
return k;
}
int k,l,c,st,dr,af,i,j,x,y,vx,vy,d,hh,a[155][155],cl[22505],cc[22505];
bool v[22505],ok;
int main()
{
fin >> n >> m >> k;
l=detl(k);
c=detc(k);
v[k]=1;
for (i=1;i<=n;i++) for (j=1;j<=m;j++) fin >> a[i][j];
cl[1]=l;
cc[1]=c;
a[l][c]=0;
st=dr=1;
af=1;
while (st<=dr)
{
x=cl[st];
y=cc[st];
for (d=0;d<4;d++)
{
vx=x+di[d];
vy=y+dj[d];
k=a[vx][vy];
if (vx>=1 && vx<=n && vy>=1 && vy<=m && v[k]==1 && a[vx][vy]!=0)
{
af++;
a[vx][vy]=0;
dr++;
cl[dr]=vx;
cc[dr]=vy;
hh=detk(vx,vy);
if (v[hh]==0) ok=1;
v[hh]=1;
}
}
st++;
if (st>dr && ok==1)
{
st=1;
ok=0;
}
}
fout << af;
return 0;
}