Cod sursa(job #2232048)

Utilizator LorenaMariaHantig Lorena LorenaMaria Data 17 august 2018 09:57:44
Problema Castel Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.81 kb
#include <fstream>
#include <vector>
using namespace std;
ifstream in("castel.in");
ofstream out("castel.out");
int n,m,k,v[22501],a[22501],s;
vector <int> c[22501];
void castel(int i)
{ if(v[i])
     return;
  v[i]=1;
  s++;
  if(i%m!=0 && v[a[i-1]])
     castel(i-1);
  if(i%m!=m-1 && v[a[i+1]])
     castel(i+1);
  if(i+m<n*m && v[a[i+m]])
     castel(i+m);
  if(i-m>=0 && v[a[i-m]])
     castel(i-m);
  for(int j=0;j<c[i].size();j++)
    if(((c[i][j]%m!=0 && v[c[i][j]-1]) || (c[i][j]%m!=m-1 && v[c[i][j]+1]) || (c[i][j]+m<n*m && v[c[i][j]+m]) || (c[i][j]-m>=0 && v[c[i][j]-m])))
       castel(c[i][j]);
}
int main()
{ in>>n>>m>>k;
  k--;
  for(int i=0;i<n*m;i++)
  { in>>a[i];
    a[i]--;
    c[a[i]].push_back(i);
  }
  castel(k);
  out<<s;
  in.close();
  out.close();
  return 0;
}