Cod sursa(job #568216)

Utilizator TeodoraTanaseTeodora Tanase TeodoraTanase Data 30 martie 2011 22:10:46
Problema Castel Scor 100
Compilator cpp Status done
Runda brasov_7_jr Marime 1.34 kb
#include <cstdio>

using namespace std;

int m, n, k, chei[23000], u=1, p, nr, camere[23000];
const int di[4]={0,0,-1,1}, dj[4]={-1,1,0,0};

struct camera
{
    int nr,ch;
} cam[200][200];

struct coada
{
    int x,y;
} c[23000];

void citire()
{
    scanf ("%d %d %d ",&m,&n,&k);
    int z=1;
    for (int i=1; i<=m; i++)
        for (int j=1; j<=n; j++)
        {
            scanf ("%d ",&cam[i][j].ch);
            cam[i][j].nr=z;
            if (z==k)
            {
                c[1].x=i;
                c[1].y=j;
                chei[cam[i][j].ch]=1;
                chei[cam[i][j].nr]=1;
                camere[cam[i][j].nr]=1;
            }
            z++;
        }
}

void cautare()
{
    nr=0;
    for (p=1; p<=u; p++)
    {
        for (int k=0; k<4; k++)
        {
            int i=c[p].x+di[k], j=c[p].y+dj[k];
            if (chei[cam[i][j].ch]==1 && camere[cam[i][j].nr]==0)
            {
                chei[cam[i][j].nr]=1;
                camere[cam[i][j].nr]=1;
                c[u+1].x=i;
                c[u+1].y=j;
                u++;
                nr++;
            }
        }
    }
}

int main()
{
    freopen ("castel.in","r",stdin);
    freopen ("castel.out","w",stdout);
    citire();
    nr=1;
    while (nr)
        cautare();
    printf ("%d\n",u);
    return 0;
}