Pagini recente » Monitorul de evaluare | Cod sursa (job #2011609) | Cod sursa (job #2297484) | Cod sursa (job #1750702) | Cod sursa (job #191746)
Cod sursa(job #191746)
#include<stdio.h>
#include<stdlib.h>
#define N 155
using namespace std;
int main(){
int c[24000],lista[24000],a[N][N]={0};
int m,n,i,j,k,sz,ok,e,v;
freopen("castel.in","r",stdin);
freopen("castel.out","w",stdout);
scanf("%d%d%d",&m,&n,&k);
for(i=1;i<=m;i++)
for(j=1;j<=n;j++)
scanf("%d",&a[i][j]);
for(i=1;i<=24000;i++)
c[i]=0;
ok=1;
sz=1;
c[k]=1;
lista[1]=k;
v=1;
while(ok){
ok=0;
e=1;
while(e<=v){
k=lista[e];
if (k%n){
i=k/n+1;
j=k-((i-1)*n);
}
else{
i=k/n;
j=n;
}
if (c[a[i-1][j]]==1&&c[k-n]==0&&i>1){
c[k-n]=1;
ok=1;
sz++;
lista[++v]=k-n;
}
if(c[a[i][j+1]]==1&&c[k+1]==0&&j<n){
c[k+1]=1;
ok=1;
sz++;
lista[++v]=k+1;
}
if(c[a[i+1][j]]==1&&c[k+n]==0&&i<m){
c[k+n]=1;
ok=1;
sz++;
lista[++v]=k+n;
}
if(c[a[i][j-1]]==1&&c[k-1]==0&&j>1){
c[k-1]=1;
ok=1;
sz++;
lista[++v]=k-1;
}
e++;
}
}
printf("%d\n",sz);
fclose(stdin);
fclose(stdout);
return 0;
}