Cod sursa(job #1653701)

Utilizator Alexa2001Alexa Tudose Alexa2001 Data 16 martie 2016 14:14:14
Problema Castel Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.91 kb
#include <cstdio>
#include <algorithm>
#define x first
#define y second
#include <queue>
#define N 155

using namespace std;
int X,Y,n,m,i,j,pas=0,ajuns[N*N],a[N*N],k;

inline void Fill(int k)
{
    ajuns[k]=1;
    int v1,v2,v3,v4;
    v1=k+1;
    v2=k-1;
    v3=k-m;
    v4=k+m;

    if(v1>0 && v1<=n*m && !ajuns[v1] && ajuns[a[v1]]) Fill(v1);
    if(v2>0 && v2<=n*m && !ajuns[v2] && ajuns[a[v2]]) Fill(v2);
    if(v3>0 && v3<=n*m && !ajuns[v3] && ajuns[a[v3]]) Fill(v3);
    if(v4>0 && v4<=n*m && !ajuns[v4] && ajuns[a[v4]]) Fill(v4);
}

int main()
{
    freopen("castel.in","r",stdin);
    freopen("castel.out","w",stdout);

    scanf("%d%d%d",&n,&m,&k);

    int nr=0;
    for(i=1;i<=n;++i)
    for(j=1;j<=m;++j)
    scanf("%d",&a[++nr]);

    Fill(k);

    int ans=0;
    for(i=1;i<=n;++i)
    for(j=1;j<=m;++j)
    if(ajuns[i*m+j-m]) ++ans;
    printf("%d\n",ans);
    return 0;
}