Pagini recente » Cod sursa (job #1425479) | Cod sursa (job #3274710) | Cod sursa (job #1404333) | Cod sursa (job #2172311) | Cod sursa (job #568216)
Cod sursa(job #568216)
#include <cstdio>
using namespace std;
int m, n, k, chei[23000], u=1, p, nr, camere[23000];
const int di[4]={0,0,-1,1}, dj[4]={-1,1,0,0};
struct camera
{
int nr,ch;
} cam[200][200];
struct coada
{
int x,y;
} c[23000];
void citire()
{
scanf ("%d %d %d ",&m,&n,&k);
int z=1;
for (int i=1; i<=m; i++)
for (int j=1; j<=n; j++)
{
scanf ("%d ",&cam[i][j].ch);
cam[i][j].nr=z;
if (z==k)
{
c[1].x=i;
c[1].y=j;
chei[cam[i][j].ch]=1;
chei[cam[i][j].nr]=1;
camere[cam[i][j].nr]=1;
}
z++;
}
}
void cautare()
{
nr=0;
for (p=1; p<=u; p++)
{
for (int k=0; k<4; k++)
{
int i=c[p].x+di[k], j=c[p].y+dj[k];
if (chei[cam[i][j].ch]==1 && camere[cam[i][j].nr]==0)
{
chei[cam[i][j].nr]=1;
camere[cam[i][j].nr]=1;
c[u+1].x=i;
c[u+1].y=j;
u++;
nr++;
}
}
}
}
int main()
{
freopen ("castel.in","r",stdin);
freopen ("castel.out","w",stdout);
citire();
nr=1;
while (nr)
cautare();
printf ("%d\n",u);
return 0;
}