Pagini recente » Cod sursa (job #1273866) | Cod sursa (job #2851564) | Cod sursa (job #136334) | Cod sursa (job #1937329) | Cod sursa (job #59929)
Cod sursa(job #59929)
#include<stdio.h>
#define N 150*150
const int dx[]={-1,0,1,0};
const int dy[]={0,1,0,-1};
int c[200][200],m,n,k,v[N+1],xi,yi,k1;
struct mat
{
int ch,inf;
}a[200][200];
struct coad{
int x,y;
}coada[N];
void coords(int k)
{
int i,j,ok=1;
for(i=1;i<=m&&ok;i++)
for(j=1;j<=n&&ok;j++)
if(a[i][j].ch==k)
{
xi=i;
yi=j;
ok=0;
}
}
void init(int c[200][200])
{
int i,j;
for(i=1;i<=m;i++)
for(j=1;j<=n;j++)
c[i][j]=0;
}
void citire()
{
FILE *f=fopen("castel.in","r");
int i,j,k1=1;
fscanf(f,"%d%d%d",&m,&n,&k);
for(i=1;i<=m;i++)
for(j=1;j<=n;j++)
{
fscanf(f,"%d",&a[i][j].inf);
a[i][j].ch=k1++;
}
for(i=0;i<=m+1;i++)
c[i][0]=c[i][n+1]=1;
for(j=0;j<=n+1;j++)
c[0][j]=c[m+1][j]=1;
coords(k);
v[a[xi][yi].ch]=1;
}
void rez()
{
int x1,y1,x2,y2,ic,i,aux;
coada[k1].x=xi;
coada[k1++].y=yi;
c[xi][yi]=1;
do
{
aux=0;
for(ic=0;ic<k1;ic++)
{
x1=coada[ic].x;
y1=coada[ic].y;
for(i=0;i<4;i++)
{
x2=x1+dx[i];
y2=y1+dy[i];
if(!c[x2][y2]&&v[a[x2][y2].inf])
{
coada[k1].x=x2;
coada[k1++].y=y2;
c[x2][y2]=1;
v[a[x2][y2].ch]=1;
aux=1;
}
}
}
}while(aux);
}
void afis()
{
FILE *g=fopen("castel.out","w");
int i,nr=0;
for(i=1;i<=N;i++)
if(v[i])
nr++;
fprintf(g,"%d",nr);
}
int main()
{
citire();
rez();
afis();
return 0;
}