Cod sursa(job #55022)

Utilizator anna_bozianuBozianu Ana anna_bozianu Data 26 aprilie 2007 10:39:46
Problema Castel Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.68 kb
#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;
}