Cod sursa(job #124613)

Utilizator za_wolfpalianos cristian za_wolf Data 19 ianuarie 2008 17:38:58
Problema Castel Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.95 kb
#include<stdio.h>
#define NMAX 151
long ll[4]={0,0,1,-1};
long cc[4]={1,-1,0,0};
long rez,p,in,b,sf,xi,yi,x[NMAX][NMAX],y[NMAX*NMAX],z[NMAX][NMAX],s[NMAX][NMAX],i,j,n,l,m,k,a,w,c;
struct kkt
{
	long X,Y;
};
kkt q[NMAX*NMAX];
int main()
{
	freopen("castel.in","r",stdin);
	freopen("castel.out","w",stdout);
	scanf("%ld%ld%ld",&n,&m,&c);
	a=0;
	for (i=1;i<=n;i++)
		for (j=1;j<=m;j++)
		{
			scanf("%ld",&x[i][j]);
			p++;
			s[i][j]=p;
			if (p==c)
			{
				xi=i;
				yi=j;
			}
		}
	y[c]=1;
	z[xi][yi]=1;
	rez=1;
	in=1;
	sf=1;
	q[1].X=xi;
	q[1].Y=yi;
	w=1;
	while (w)
	{
		in=1;
        w=0;
		while (in<=sf)
		{
			for (l=0;l<=3;l++)
			{
				a=q[in].X+ll[l];
				b=q[in].Y+cc[l];
				if (z[a][b]==0&&y[x[a][b]]==1&&a>=1&&a<=n&&b>=1&&b<=m)
				{
					sf++;
					q[sf].X=a;
					q[sf].Y=b;
					y[s[a][b]]=1;
					z[a][b]=1;
					rez++;
					w=1;
				}
			}
			in++;
		}
	}
	printf("%ld\n",rez);

	return 0;
}