Pagini recente » Cod sursa (job #2111894) | Cod sursa (job #678065) | Cod sursa (job #1197275) | Cod sursa (job #168709) | Cod sursa (job #1599958)
#include <fstream>
#define M 155
using namespace std;
ifstream fi("castel.in");
ofstream fo("castel.out");
int di[]={0,0,1,-1};
int dj[]={1,-1,0,0};
int a[M][M]; // matricea initiala
int nr[M][M]; //b[i][j] returneaza numarul camerei de coordonate i,j;
bool cheie[M*M]; // cheie [i] returneza 1 daca avem cheie pt camera cu nr i
bool viz [M][M];
bool ok=1;
int nr_camere;
int i,j,n,m,p,p1,p2,y,k;
struct pct { int l,c;} q[M*M];
int main()
{
fi>>n>>m>>p;
for(i=1;i<=n;i++) for(j=1;j<=m;j++)
{
fi>>a[i][j];
nr[i][j]=++y;
if(p==y) p1=i,p2=j;
}
cheie[p]=1; viz[p1][p2]=1;
nr_camere=1;
q[1]={p1,p2};
while(ok)
for(k=1,ok=0; k<=nr_camere; k++)
for(int d=0;d<4;d++)
{
i=q[k].l + di[d];
j=q[k].c + dj[d];
if( !viz[i][j] && cheie[a[i][j]] && i>0 && i<=n && j>0 && j<=m)
{
ok=1;
nr_camere++;
q[ nr_camere ].l=i; q[ nr_camere ].c=j;
cheie[nr[i][j]]=1; viz[i][j]=1;
}
}
fo<<nr_camere;
return 0;
}