Cod sursa(job #1599958)

Utilizator Cudrici_CarinaCudrici Carina Cudrici_Carina Data 14 februarie 2016 16:00:51
Problema Castel Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.06 kb
#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;
}