Pagini recente » Cod sursa (job #842061) | Cod sursa (job #2447816) | Cod sursa (job #3232671) | Cod sursa (job #2837365) | Cod sursa (job #55033)
Cod sursa(job #55033)
#include<stdio.h>
long int m,n,k,mark[225],t,i,a[225],l,ll,x[900],y[900],sol;
int cut()
{
x[i]=x[l];x[l]=0;y[i]=y[l];y[l]=0;l--;
return 0;
}
int main()
{
FILE *f,*g;
f=fopen("castel.in","r");
g=fopen("castel.out","w");
fscanf(f,"%ld%ld%ld",&m,&n,&k);
mark[k]=1;sol=1;
t=m*n;
for(i=1;i<=t;i++)
{ fscanf(f,"%ld",&a[i]);
if(i-n>0){l++;x[l]=i;y[l]=i-n;}
if(i+n<=t){l++;x[l]=i;y[l]=i+n;}
if((i%n)!=1){l++;x[l]=i;y[l]=i-1;}
if(i%n){l++;x[l]=i;y[l]=i+1;}
}
do
{
ll=l;
for(i=1;i<=l;i++)
{
if(mark[y[i]]) cut();
else if(mark[x[i]])
if(mark[a[y[i]]])
{mark[y[i]]=1;cut();sol++;}
}
}while(ll>l);
fprintf(g,"%ld\n",sol);
fcloseall();
return 0;
}