#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;
char a[101][101];
bool fs[101][101],fk[101][101];
int n;
void dfss(int x,int y){
if(x<0||x>=n||y<0||y>=n||a[x][y]=='0'||fs[x][y]==1)
return;
fs[x][y]=1;
dfss(x-1,y);dfss(x+1,y);dfss(x,y-1);dfss(x,y+1);
}
void dfsk(int x,int y){
if(x<0||x>=n||y<0||y>=n||a[x][y]=='0'||fk[x][y]==1)
return;
fk[x][y]=1;
dfsk(x-1,y-1);dfsk(x-1,y);dfsk(x-1,y+1);
dfsk(x,y-1); dfsk(x,y+1);
dfsk(x+1,y-1);dfsk(x+1,y);dfsk(x+1,y+1);
}
int main(){
int i,j,icase=0;
while(scanf("%d",&n)&&n!=0){
memset(a,0,sizeof(a));
memset(fs,0,sizeof(fs));
memset(fk,0,sizeof(fk));
for(i=0;i<n;i++)
scanf("%s",a[i]);
int count1=0,count2=0;
for(i=0;i<n;i++)
for(j=0;j<n;j++)
if(a[i][j]=='1'){
if(fs[i][j]==0){
count1++;
dfss(i,j);
}
if(fk[i][j]==0){
count2++;
dfsk(i,j);
}
}
printf("Case %d: %d %d\n\n",++icase,count1,count2);
}
return 0;
}
/**************************************
Problem id : SDUT OJ 2152
Result : Accepted
Take Memory : 620K
Take Time : 0MS
Submit Time : 2013-05-23 00:06:31
**************************************/
sdut2152 Balloons
最新推荐文章于 2017-02-18 23:02:22 发布