Cod sursa(job #2135263)

Utilizator Anastasia11Susciuc Anastasia Anastasia11 Data 18 februarie 2018 18:37:32
Problema Castel Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.46 kb
#include <fstream>
#include <deque>

using namespace std;

ifstream f("castel.in");
ofstream g("castel.out");
int a[152][152],b[152][152];
bool viz[152][152];
bool fr[30000];
int c, xinc,yinc;
int n , m , k;
int cnt=1;
int dx[]={0,0,-1,1};
int dy[]={-1,1,0,0};
int main()
{
    f >> n >> m >> k ;
     for ( int i = 1 ; i <= n ; i ++ )
       for ( int j = 1 ; j <= m ; j ++ )
         {f >> a[i][j];
         c++;
           b[i][j]=c;
         }

  xinc = 1+ (k-1)/m;
  yinc = 1+ (k-1)%m;
  fr[k]=1;

    deque < pair < int , int > > Q;
    Q.push_front(make_pair(xinc,yinc));
    fr[b[xinc][yinc]]=1;
    a[xinc][yinc]=-1;
   int cauta=1;
    while(cauta==1)
    {
        cauta =0;
         while(!Q.empty())
         {
             int i = Q.front().first;
             int j = Q.front().second;
             Q.pop_front();
              for ( int q = 0 ; q <= 3 ; q ++ )
              {
                  int ii = i + dx[q];
                  int jj = j + dy[q];
                   if(a[ii][jj]!=-1)
                   {
                       if(fr[a[ii][jj]]==1)
                       {
                           Q.push_front(make_pair(ii,jj));
                           a[ii][jj]=-1;
                           fr[b[ii][jj]]=1;
                           cnt++;
                           cauta=1;
                       }
                   }
              }
         }
    }
    g << cnt + 1;


    return 0;
}