Pagini recente » Cod sursa (job #2121219) | Cod sursa (job #2606047) | Cod sursa (job #413478) | Cod sursa (job #644692) | Cod sursa (job #55022)
Cod sursa(job #55022)
#include<stdio.h>
int m,n,k,mark[22501],t,i,a[22501],l,ll,x[90005],y[90005],sol;
int cut()
{
x[i]=x[l];y[i]=y[l];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,"%d",&a[i]);
if(i-m>0){l++;x[l]=i;y[l]=i-m;}
if(i+m<=t){l++;x[l]=i;y[l]=i+m;}
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]]*mark[a[y[i]]]) {mark[y[i]]=1;cut();sol++;}
}
}while(ll>l);
fprintf(g,"%d\n",sol);
fcloseall();
return 0;
}