Pagini recente » Cod sursa (job #569028) | Cod sursa (job #1277276) | Cod sursa (job #771281) | Cod sursa (job #2648241) | Cod sursa (job #277052)
Cod sursa(job #277052)
#include<stdio.h>
#define max 200
int a[max][max];
int v[max*max],m,n,k,i,j, x;
char kulcs[max]={0};
int mut=0, sum,mu;
struct s{int i; int j;};
s szomszed[max];
int main()
{ kulcs[0]='2';
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;
}