Pagini recente » Cod sursa (job #1202049) | Cod sursa (job #813437) | Cod sursa (job #2980729) | Cod sursa (job #1725161) | Cod sursa (job #844439)
Cod sursa(job #844439)
#include<stdio.h>
#include<queue>
#include<algorithm>
#define x first
#define y second
using namespace std ;
queue < pair < long , long > > q ;
pair < long , long > temp ;
bool cod [ 150 * 150 + 7 ] , viz [ 157 ] [ 157 ] ;
long dx [ ] = { 0 , 1 , -1 , 0 , 0 } ;
long dy [ ] = { 0 , 0 , 0 , 1 , -1 } ;
long nr , n , m , k , a [ 157 ] [ 157 ] ;
int main ( )
{
freopen ( "castel.in" , "r" , stdin ) ;
freopen ( "castel.out" , "w" , stdout ) ;
scanf ( "%ld %ld %ld" , & n , & m , & k ) ;
for ( long i = 1 ; i <= n ; ++ i )
for ( long j = 1 ; j <= m ; ++ j )
{
scanf ( "%ld" , & a [ i ] [ j ] ) ;
nr ++ ;
if ( nr == k )
{
cod [ a [ i ] [ j ] ] = 1 ;
q . push ( make_pair ( i , j ) ) ;
}
}
nr = 1 ;
while ( ! q . empty ( ) )
{
temp = q . front ( ) ;
for ( long i = 1 ; i <= 4 ; ++ i )
{
temp . x += dx [ i ] ;
temp . y += dy [ i ] ;
if ( cod [ a [ temp . x ] [ temp . y ] ] == 1 && viz [ temp . x ] [ temp . y ] == 0 )
{
q . push ( temp ) ;
++ nr ;
cod [ ( temp . x - 1 ) * m + temp . y ] = 1 ;
viz [ temp . x ] [ temp . y ] = 1 ;
}
temp . x -= dx [ i ] ;
temp . y -= dy [ i ] ;
}
q . pop ( ) ;
}
printf ( "%ld" , nr ) ;
return 0 ;
}