68 lines
1.1 KiB
C++
68 lines
1.1 KiB
C++
#include<stdio.h>
|
|
#include<string.h>
|
|
|
|
#define MAXN 10
|
|
#define MAXM 10
|
|
|
|
int BFS_II_I(int,int);
|
|
|
|
int map[12][12],qx[200],qy[200];
|
|
|
|
int main(void)
|
|
{
|
|
int i,j,ans=0;
|
|
memset(map,255,sizeof(map));
|
|
for (i=1;i<=MAXN;i++)
|
|
{
|
|
for (j=1;j<=MAXM;j++)
|
|
{
|
|
scanf("%d",&map[i][j]);
|
|
map[i][j]=-map[i][j];
|
|
}
|
|
}
|
|
for (i=1;i<=MAXN;i++)
|
|
{
|
|
if (0==map[i][1]) BFS_II_I(i,1);
|
|
if (0==map[i][MAXM]) BFS_II_I(i,MAXM);
|
|
if (0==map[1][i]) BFS_II_I(1,i);
|
|
if (0==map[MAXM][i]) BFS_II_I(MAXM,i);
|
|
}
|
|
for (i=1;i<=MAXN;i++)
|
|
for (j=1;j<=MAXM;j++)
|
|
if (0==map[i][j]) ans++;
|
|
fprintf(stderr,"%d\n",ans);
|
|
|
|
printf("%d\n",ans);
|
|
return 0;
|
|
}
|
|
|
|
|
|
int BFS_II_I(int x,int y)
|
|
{
|
|
const int gx[4]={0,0,1,-1};
|
|
const int gy[4]={1,-1,0,0};
|
|
int head=1,tail=0,tx,ty,count=0;
|
|
map[x][y]=-1;
|
|
qx[head]=x;
|
|
qy[head]=y;
|
|
|
|
for(;head!=tail;)
|
|
{
|
|
count++;
|
|
tail++;
|
|
tx=qx[tail];
|
|
ty=qy[tail];
|
|
for (int i=0;i<4;i++)
|
|
{
|
|
x=tx+gx[i];
|
|
y=ty+gy[i];
|
|
if (-1==map[x][y]) continue;
|
|
map[x][y]=-1;
|
|
head++;
|
|
qx[head]=x;
|
|
qy[head]=y;
|
|
}
|
|
}
|
|
return count;
|
|
}
|
|
|