Pagini recente » Cod sursa (job #2532438) | Cod sursa (job #111637) | Cod sursa (job #1177827) | Cod sursa (job #2503875) | Cod sursa (job #1159317)
#include <fstream>
#include <deque>
#include <vector>
#define max 151
using namespace std;
ifstream f("castel.in");
ofstream g("castel.out");
int dx[]={0, 0, 0, 1, -1};
int dy[]={0, 1, -1, 0, 0};
int n, m, k;
//struct punct {int x, int y};
//deque <punct> coada;
int coada[2][max*max+1];
int deschid[max][max]={{0}};
int camere[max*max+1]={0};
int camera;
int v[max][max];
int linie, coloana;
int main ()
{
int i, j, ok, p, u;
f>>n>>m>>k;
for(i=1;i<=n;i++) for(j=1;j<=m;j++) f>>v[i][j];
if(k%m==0) { linie=k/m; coloana=m; }
else { linie=k/m+1; coloana=k%m; }
//coada.push_back({linie,coloana});
p=u=1;
coada[0][p]=linie;
coada[1][p]=coloana;
ok=1;
deschid[linie][coloana]=1;
camere[k]=1;
while(ok==1)
{
ok=0;
p=1;
while(p<=u)
{
for(i=1;i<=4;i++)
{
linie=coada[0][p]+dx[i];
coloana=coada[1][p]+dy[i];
if(linie>=1 && coloana>=1 && linie<=n && coloana<=m)
{
camera=(linie-1)*m+coloana;
if(deschid[linie][coloana]==0 && camere[v[linie][coloana]])
{
ok=1;
u++;
coada[0][u]=linie;
coada[1][u]=coloana;
deschid[linie][coloana]=1;
camere[camera]=1;
}
}
}
p++;
}
}
g<<u;
return 0;
}