Cod sursa(job #132335)

Utilizator ada_sAda-Mihaela Solcan ada_s Data 5 februarie 2008 17:12:40
Problema Castel Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.98 kb
#include <fstream>
std::ifstream f1("castel.in");
std::ofstream f2("castel.out");
int main()
{
	int m, n, k, i, j, cheie[30000], cont, acc[30000];///20--->30000
	bool camere[30000], modif;
	f1>>m>>n>>k;
	for (i=1; i<=(n*m); i++)
	{
		f1>>cheie[i];
		camere[i]=0;
	}//for i
	camere[k]=1;
	modif=1;
	cont=1;
	acc[0]=k;
	while (modif)
	{
		modif=0;
		for (j=0; j<cont; j++)
		{
			i=acc[j];
			if (((i-n)>0)&&(camere[cheie[i-n]])&&(camere[i-n]==0))
			{
				camere[i-n]=1;
				modif=1;
				acc[cont++]=i-n;
			}//if
			if (((i+n)<=(n*m))&&(camere[cheie[i+n]])&&(camere[i+n]==0))
			{
				camere[i+n]=1;
				modif=1;
				acc[cont++]=i+n;
			}//if
			if ((i>1)&&(((i-1)%n)!=0)&&(camere[cheie[i-1]])&&(camere[i-1]==0))
			{
				camere[i-1]=1;
				modif=1;
				acc[cont++]=i-1;
			}//if
			if (((i+1)<=(n*m))&&(((i+1)%n)!=1)&&(camere[cheie[i+1]])&&(camere[i+1]==0))		  
			{
				camere[i+1]=1;
				modif=1;
				acc[cont++]=i+1;
			}//if
  	}//for j
	}//while
	f2<<cont;
	f1.close();
	f2.close();
	return 0;
}//main