Pagini recente » Cod sursa (job #2181814) | Cod sursa (job #989830) | Cod sursa (job #2498091) | Cod sursa (job #2955040) | Cod sursa (job #1650072)
#include <iostream>
#include <fstream>
#include <queue>
using namespace std;
ifstream fin ("castel.in");
ofstream fout ("castel.out");
int di[4] = {0,0,1,-1};
int dj[4] = {-1,1,0,0};
int i, j, m, n, k, a[100][100],nr,startx,starty,numar_camere;
queue < pair < int, int > > Q;
void citire ()
{ fin >> m >> n >> k;
for ( i = 1 ; i <= m ; i++ )
for ( j = 1 ; j <= n ; j++)
{ nr++;
fin >> a[i][j];
if ( nr == k )
startx = i;
starty = j; }
}
bool OK (int i, int j)
{
if ( i < 1 || j < 1 || i > m || j > n)
return false;
return true;
}
void lee ()
{ int i_urmator, j_urmator;
numar_camere=1, startx=1, starty=1;
a[startx][startx]=1;
Q.push(make_pair(startx,starty));
while ( !Q.empty())
{ i = Q.front().first;
j = Q.front().second;
Q.pop();
for (int directie = 0 ; directie < 4 ; directie++)
{ i_urmator = i + di[directie];
j_urmator = j + dj[directie];
if (OK(i_urmator, j_urmator) && a[i_urmator][j_urmator]==1)
{ nr++;
a[i_urmator][j_urmator]=a[i][j]+1;
Q.push(make_pair(i_urmator,j_urmator));
numar_camere++;
}
}
}
}
int main ()
{ int i_urmator, j_urmator;
citire ();
lee();
fout << numar_camere;
}