Cod sursa(job #1650072)

Utilizator ShayTeodor Matei Shay Data 11 martie 2016 16:22:27
Problema Castel Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.42 kb
#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;

}