Cod sursa(job #519313)

Utilizator lianaliana tucar liana Data 4 ianuarie 2011 21:39:47
Problema Castel Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.9 kb
#include <stdio.h>
int n, m, k, i, j, inc, sf, cam, ok;
int co[22503], ad[5], nev[22503];
bool viz[22503];

void initializare()
{
	ad[1]=-m; ad[2]=-1; ad[3]=1; ad[4]=m;	
}

void citire()
{
	scanf("%ld %ld %d",&n,&m,&k);
	initializare();
	for (i=1;i<=n;i++)
		for (j=1;j<=m;j++)
			scanf("%ld",&nev[(i-1)*m+j]);
}

void rezolvare()
{
	co[1]=k;
	viz[k]=true;
	sf=1;
	ok=1;
	while (ok==1)
	{
		ok=0;
		for (j=1;j<=sf;j++)
		{
			cam=co[j];
			for (i=1;i<=4;i++)
				if ((cam+ad[i]>0) and (cam+ad[i]<=n*m) and ((cam%m>0) or (i!=3)) and ((cam%m!=1) or (i!=2)))
					if ((viz[nev[cam+ad[i]]]==true) and (viz[cam+ad[i]]==false))
					{
						ok=1;
						sf++; 
						co[sf]=cam+ad[i];
						viz[cam+ad[i]]=true;
					}
		}
	}
	printf("%ld",sf);
	
}

int main()
{
	freopen("castel.in","r",stdin);
	freopen("castel.out","w",stdout);
	citire();
	rezolvare();
	return 0;
}