Pagini recente » Cod sursa (job #1931320) | Cod sursa (job #2320517) | Cod sursa (job #3277898) | Cod sursa (job #3262274) | Cod sursa (job #2135892)
#include <fstream>
using namespace std;
ifstream f("castel.in");
ofstream g("castel.out");
struct cell{
int l, c;
};
cell coada[23500];
int dl[4] = {0, -1, 0, 1};
int dc[4] = {-1, 0, 1, 0};
bool chei[23500], drum[152][152];
int castel[152][152];
int cntr, sol, n, m;
int i, j, lvec, cvec;
void citire()
{
f >> n >> m
for (i= 1 ; i <=n ; i++ )
for(j=1; j<=m; j++)
f >> castel[i][j];
}
void bordare()
{
for(i=1; i<=n; i++)
{
catel[0][i]=-1;
catel[n+1][i]=-1;
castel[i][0]=-1;
castel[0][n+1]=-1;
}
}
void lee ()
{
bool iesi = false;
for (i = 0; i < cntr; i++) {
for (j = 0; j < NR_DIR; j++) {
lvec = coada[i].l + dl[j];
cvec = coada[i].c + dc[j];
if (castel[lvec][cvec] != -1 && chei[castel[lvec][cvec]] && drum[lvec][cvec] == 0) {
drum[lvec][cvec] = 1;
coada[cntr].l = lvec;
coada[cntr++].c = cvec;
sol++;
chei[(lvec - 1) * m + cvec] = 1;
iesi = 1;
}
}
}
if (iesi == 1)
{
lee();
}
}
int main()
{
citire();
bordare();
coada[cntr].l = ((pozS - 1) / m) + 1;
coada[cntr].c = (pozS - 1) % m + 1;
chei[castel[coada[cntr].l][coada[cntr].c]] = 1;
cntr++;
lee ();
g << sol;
return 0;
}