/* Date:2010-6-4 Author:surpasser Algorithm:BFS */ //#define LOCAL #include<iostream> #include<cctype> #include<cstdio> using namespace std; struct vertex{ int x,y; }; int cnt; int n; char table[10][10]; vertex q[100];//bfs时调用的队列 int dx[8]={0,1,0,-1,1,-1,1,-1}; int dy[8]={1,0,-1,0,1,-1,-1,1};//方向数组 int visit[10][10];//标记数组 void bfs(char A[][10],int i,int j) { visit[i][j]=1; int front,rear,nx,ny; front=rear=0; vertex u,v; u.x=i;u.y=j; q[rear++]=u; while(front<rear) { v=q[front++]; for(int d=0;d<8;d++) { nx=v.x+dx[d]; ny=v.y+dy[d]; if(nx>=0&&nx<n&&ny>=0&&ny<n&&!visit[nx][ny]) { visit[nx][ny]=1; if(A[nx][ny]=='0') { q[rear].x=nx; q[rear++].y=ny; } } } } } int main() { #ifdef LOCAL freopen("test.txt","r",stdin); #endif int ntest,i,j,k; scanf("%d",&ntest); for(i=1;i<=ntest;i++) { cnt=0; memset(visit,0,sizeof(visit)); scanf("%d",&n); for(j=0;j<n;j++) scanf("%s",table[j]); for(j=0;j<n;j++) { for(k=0;k<n;k++) { if(!visit[j][k]&&table[j][k]=='0') { cnt++; bfs(table,j,k); } } } for(j=0;j<n;j++) { for(k=0;k<n;k++) { if(!visit[j][k]&&isdigit(table[j][k])) cnt++; } } printf("Case %d: %d/n",i,cnt); } return 0; }