Pagini recente » Cod sursa (job #2788478) | Cod sursa (job #1966426) | Cod sursa (job #3260009) | Cod sursa (job #1266123) | Cod sursa (job #2698812)
#include <bits/stdc++.h>
using namespace std;
ifstream in ("castel.in");
ofstream out ("castel.out");
const int NMAX = 157;
void pheel ( int x, int y );
void resetAll ();
int n, m, k;
int v[NMAX][NMAX];
int L, C;
int sorin;
bool chei[NMAX * NMAX];
bool open[NMAX][NMAX];
bool viz[NMAX][NMAX];
int dx[] = { 0, 1, 0, -1, 0 };
int dy[] = { 0, 0, 1, 0, -1 };
int main()
{
in >> n >> m >> k;
for ( int i = 1 ; i <= n ; ++i )
for ( int j = 1 ; j <= m ; ++j )
in >> v[i][j];
L = k / m + 1;
C = k % m;
if ( C == 0 )
C = m;
open[L][C] = true;
for ( int q = 1 ; q <= 200 ; ++q )
{
resetAll();
pheel ( L, C );
}
for ( int i = 1 ; i <= n ; ++i )
for ( int j = 1 ; j <= m ; ++j )
if ( open[i][j] )
++sorin;
out << sorin;
return 0;
}
void pheel ( int x, int y )
{
chei[m * ( x - 1 ) + y] = true;
viz[x][y] = true;
for ( int d = 1 ; d <= 4 ; ++d )
if ( !viz[x + dx[d]][y + dy[d]] && chei[v[x + dx[d]][y + dy[d]]] )
{
open[x + dx[d]][y + dy[d]] = true;
pheel ( x + dx[d], y + dy[d] );
}
}
void resetAll ()
{
for ( int i = 1 ; i <= n ; ++i )
for ( int j = 1 ; j <= m ; ++j )
viz[i][j] = 0;
}