Pagini recente » Diferente pentru aplicatii-ale-cautarii-binare intre reviziile 2 si 3 | Istoria paginii utilizator/troi | Rating Nica Andrei (all4fun) | Diferente pentru introducere-in-asamblare intre reviziile 21 si 39 | Cod sursa (job #409743)
Cod sursa(job #409743)
#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;
}
}
}
}
printf("%d",h);
}