Pagini recente » Cod sursa (job #183980) | Cod sursa (job #2073515) | Rating Tirisi Claudiu (Justice88) | Cod sursa (job #1254846) | Cod sursa (job #1749383)
#include <fstream>
#include <iostream>
#include <queue>
///#include <valuta>
using namespace std;
ofstream fout ("castel.out");
ifstream fin ("castel.in");
queue <int> q;
queue <int> lst[23000];
int dx[10] = { -1 , 1 };
int aux,n,m,l,frc[23000],v[23000],k,i,rsp,poz;
int main()
{
fin>>n>>m>>k;
dx[ 2 ] = n;
dx[ 3 ] = - n;
for( i = 1 ; i <= n * m ; i++ )
fin>>v[ i ];
q.push( k );
frc[ k ] = 1;
while( !q.empty( ) )
{
aux = q.front( );
q.pop( );
while( !lst[ i ].empty( ) )
{
frc[ lst[ i ].front( ) ] = 1;
lst[ i ].pop( );
}
for( i = 0 ; i < 4 ; i++ )
{
poz = aux + dx[ i ];
if( poz < 1 || poz > n * m )
continue;
if( frc[ v[ poz ] ] == 1 && frc[ poz ] == 0 )
{
frc[ poz ] = 1;
q.push( poz );
}
else
lst[ v[ poz ] ].push( poz );
}
}
for( i = 1 ; i <= n * m ; i++ )
if( frc[ i ] )
rsp++;
fout<<rsp;
return 0;
}