Pagini recente » Cod sursa (job #42165) | Cod sursa (job #1788693) | Cod sursa (job #1683512) | Cod sursa (job #351098) | Cod sursa (job #132335)
Cod sursa(job #132335)
#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