Pagini recente » Cod sursa (job #2789434) | Cod sursa (job #692463) | Cod sursa (job #986255) | Cod sursa (job #918769) | Cod sursa (job #574897)
Cod sursa(job #574897)
#include<stdio.h>
#include<vector>
using namespace std;
#define Dim 155
FILE*f=fopen("castel.in","r");
FILE*g=fopen("castel.out","w");
int n,m,k,i,j,Nec[Dim*Dim],C[Dim*Dim];
int Viz[Dim*Dim],Used[Dim*Dim];
int p,u,x,c,r;
vector<int>F[Dim*Dim];
inline void fct () {
for ( p = u = 1 , C[1] = k , Used[k] = 1 ; p <= u ; ++p ){
c = C[p];
if ( c > m ){
if ( !Used[c - m] && Viz[c-m] ) C[++u] = c-m , Used[c-m] = 1;
}
if ( ( c - 1 ) % m ){
if ( !Used[ c - 1] && Viz[c-1] ) C[++u] = c-1, Used[c-1] = 1;
}
if ( c % m ){
if ( !Used[ c + 1 ] && Viz[c+1] ) C[++u] = c + 1, Used[c+1] = 1;
}
if ( c <= ( n - 1 ) * m ){
if ( !Used[c+m] && Viz[c+m] ) C[++u] = c + m , Used[c+m] = 1;
}
}
}
int main () {
fscanf(f,"%d %d %d",&n,&m,&k);
for ( i = 1 ; i <= n ; ++i ){
for ( j = 1 ; j <= m ; ++j ){
fscanf(f,"%d",&x);
Nec[(i-1)*m+j] = x;
F[x].push_back((i-1)*m+j);
}
}
for ( p = u = 1, C[1] = k , Viz[k] = 1 ; p <= u ; ++p ){
c = C[p];
for ( i = 0 ; i < F[c].size() ; ++i ){
r = F[c][i];
if ( !Viz[r] ){
Viz[r] = 1;
C[++u] = r;
}
}
}
fct();
fprintf(g,"%d\n",u);
fclose(f);
fclose(g);
return 0;
}