Pagini recente » Cod sursa (job #2671328) | Cod sursa (job #2805218) | Cod sursa (job #1483982) | Cod sursa (job #1175704) | Cod sursa (job #409865)
Cod sursa(job #409865)
#include <cstdio>
#define lmax 22555
int n, m, k, v[lmax], ua[lmax], uc[lmax], c[lmax], a[lmax], h, ha;
void add(int x)
{
if (!ua[x] && !uc[x])
{
if (uc[v[x]])
{
h++;
c[h]=x;
uc[x]=1;
} else
{
ha++;
a[ha]=x;
ua[x]=1;
}
}
}
int main()
{
freopen("castel.in","r",stdin);
freopen("castel.out","w",stdout);
scanf("%d %d %d",&n,&m,&k);
int i, j, x;
for (i=1; i<=n*m; i++) scanf("%d",&v[i]);
h=1;
c[1]=k;
uc[k]=1;
uc[v[k]]=1;
for (i=1; i<=h; i++)
{
x=c[i]-1;
if (c[i]%m!=1) add(x);
x=c[i]+1;
if (c[i]%m) add(x);
x=c[i]-m;
if (x>0) add(x);
x=c[i]+m;
if (x<=n*m) add(x);
if (i==h)
{
for (j=1; j<=ha; j++)
{
if (uc[v[a[j]]])
{
h++;
c[h]=a[j];
ua[a[j]]=0;
uc[a[j]]=1;
a[j]=0;
break;
}
}
}
}
printf("%d",h);
}