Pagini recente » Cod sursa (job #213968) | Cod sursa (job #2428484) | Cod sursa (job #372991) | Cod sursa (job #2788093) | Cod sursa (job #1153196)
#include <cstdio>
#include <queue>
using namespace std;
queue <int>c[22503];
int x[30001],y[30001],chei[30000];
int main()
{
int n,m,ok,nr,op,sum,i,j;
FILE *f=fopen("castel.in","r");
FILE *g=fopen("castel.out","w");
fscanf(f,"%d%d%d",&n,&m,&op);
for(i=1; i<=n*m; ++i)
fscanf(f,"%d",&x[i]);
chei[1]=x[op];
int kap,k[4];
k[1]=1;
k[2]=m;
k[3]=-1;
k[0]=m*(-1);
for(kap=0; kap<=3; ++kap)
{
if((op+k[kap])>=1&&(op+k[kap])<=n*m)
{
c[x[op+k[kap]]].push(op+k[kap]);
}
}
int nchei=1;
int a;
ok=0;
while(ok==0)
{
ok=1;
for(i=1; i<=nchei; ++i)
{
while(!c[chei[i]].empty())
{
a=c[chei[i]].front();
++nchei;
chei[nchei]=c[chei[i]].front();
for(kap=0; kap<=3; ++kap)
{
if((c[chei[i]].front()+k[kap])>0&&(c[chei[i]].front()+k[kap])<=n*m)
c[x[c[chei[i]].front()+k[kap]]].push(c[chei[i]].front()+k[kap]);
}
c[chei[i]].pop();
}
}
}
fprintf(g,"%d\n",nchei);
return 0;
}