250706
#include <stdio.h>
int n;
int k[2][700]= {};
int s=0, e=0;
int px, py;
int arr[27][27]= {};
void push (int x, int y)
{
k[0][e]=x;
k[1][e]=y;
arr[x][y]=0;
e++;
}
int pop()
{
s++;
px = k[0][s-1];
py = k[1][s-1];
}
int main()
{
int sum=0;
scanf("%d", &n);
for (int i=1 ; i<=n ; i++)
{
for (int j=1 ; j<=n ; j++)
{
scanf("%1d", &arr[i][j]);
}
}
for (int i=1 ; i<=n ; i++)
{
for (int j=1 ; j<=n ; j++)
{
if (arr[i][j]==1)
{
push(i, j);
//printf("%d %d\n",i,j);
sum++;
while (s!=e)
{
pop();
// arr[px][py] 근처에서 방문x 연결o 모두 push
if(arr[px+1][py]==1)
{
push(px+1, py);
arr[px+1][py]=0;
}
if(arr[px-1][py]==1)
{
push(px-1, py);
arr[px-1][py]=0;
}
if(arr[px][py+1]==1)
{
push(px, py+1);
arr[px][py+1]=0;
}
if(arr[px][py-1]==1)
{
push(px, py-1);
arr[px][py-1]=0;
}
}
}
}
}
printf("%d", sum);
}




