Cod sursa(job #105963)

Utilizator igorPirnau Igor igor Data 18 noiembrie 2007 10:15:45
Problema Castel Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.87 kb
#include<fstream.h>

ifstream f("castel.in");
ofstream g("castel.out");

int a[22650][200],x[22650],n,m,k,i,s,p,u,nm,de[4],j;
char viz[23000];

int bun(int q)
{
	if(s%m==1&&i==1) return 0;
	if(s%m==0&&i==0) return 0;
	if(q>0&&q<=nm&&viz[q]==1) return 1;
	return 0;
}

int main()
{
	f>>n>>m>>k;
	de[0]=1;de[1]=-1;de[2]=m;de[3]=-m;
	nm=n*m;
	for(i=1;i<=nm;i++)
	{
		f>>s;
		a[s][0]++;
		a[s][a[s][0]]=i;
	}
	f.close();
	
	viz[k]=1;
	p=u=1;
	x[p]=k;
	while(p<=u)
	{
		s=x[p];
		for(i=1;i<=a[s][0];i++) if(!viz[a[s][i]])
								{
									u++;	x[u]=a[s][i];	viz[a[s][i]]=1;
								}
		p++;
	}

	p=u=1;
	x[p]=k;
	while(p<=u)
	{
		s=x[p];
		for(i=0;i<4;i++) 	if(bun(s+de[i]))
							{
								u++;	x[u]=s+de[i];	viz[s+de[i]]=2;
							}
		p++;
	}

	int nr=0;
	for(i=1;i<=nm;i++) if(viz[i]==2) nr++;
	
	g<<nr;
	g.close();
	return 0;
}