Pagini recente » Cod sursa (job #1384910) | Cod sursa (job #2746194) | Cod sursa (job #1096000) | Cod sursa (job #378167) | Cod sursa (job #277063)
Cod sursa(job #277063)
#include<stdio.h>
#define max 200
int a[max][max];
int m,n,k,i,j, x;
char kulcs[max*max]={0};
int mut=0, sum,mu;
struct s{int i; int j;};
s szomszed[max*max];
int main()
{
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]);
kulcs[k]='1';
i=k/n+1;
j=k-(i-1)*n;
a[i][j]=0;
if(i-1>=1&&a[i-1][j]!=0)
{
szomszed[++mut].i=i-1;
szomszed[mut].j=j;
}
if(i+1<=m&&a[i+1][j]!=0)
{
szomszed[++mut].i=i+1;
szomszed[mut].j=j;
}
if(j-1>=1&&a[i][j-1]!=0)
{
szomszed[++mut].i=i;
szomszed[mut].j=j-1;
}
if(j<=n&&a[i][j+1]!=0)
{
szomszed[++mut].i=i;
szomszed[mut].j=j+1;
}
do{
mu=0;
for(x=1;x<=mut;x++)
{sum=(szomszed[x].i-1)*n+szomszed[x].j;
if(kulcs[a[szomszed[x].i][szomszed[x].j]]=='1')
{mu=1;
kulcs[sum]='1';
i=szomszed[x].i;
j=szomszed[x].j;
a[i][j]=0;
if(i-1>=1&&a[i-1][j]!=0)
{
szomszed[++mut].i=i-1;
szomszed[mut].j=j;
}
if(i+1<=m&&a[i+1][j]!=0)
{
szomszed[++mut].i=i+1;
szomszed[mut].j=j;
}
if(j-1>=1&&a[i][j-1]!=0)
{
szomszed[++mut].i=i;
szomszed[mut].j=j-1;
}
if(j<=n&&a[i][j+1]!=0)
{
szomszed[++mut].i=i;
szomszed[mut].j=j+1;
}
}
}
}while(mu==1);
sum=0;
for(i=1;i<=m;i++)
for(j=1;j<=n;j++)
if(a[i][j]==0)
sum++;
printf("%d", sum);
return 0;
}