Cod sursa(job #1749383)

Utilizator vlasiuflaviusVlasiu Flavius vlasiuflavius Data 28 august 2016 12:47:01
Problema Castel Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.13 kb
#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;
}