#include #include #include #define IN "dice.in" int pos[4][2]={{0,1},{1,0},{0,-1},{-1,0}},p; char pict[52][52]; int cmp(const void *a,const void *b){ return *((int *)a)-*((int *)b); } void visit2(int i,int j){ int k; pict[i][j]='*'; for(k=0;k<4;k++){ if(pict[i+pos[k][0]][j+pos[k][1]]=='X') visit2(i+pos[k][0],j+pos[k][1]); } } void visit(int i,int j){ int k; if(pict[i][j]=='X'){ p++; visit2(i,j); /* printf("P:%d,%d:\n",i,j);*/ } pict[i][j]='.'; for(k=0;k<4;k++) if(pict[i+pos[k][0]][j+pos[k][1]]!='.') visit(i+pos[k][0],j+pos[k][1]); } int main(void){ int w,h,i,d,j,c,sol[10000]; freopen(IN,"rt",stdin); for(c=1;scanf("%d %d",&w, &h),w&&h;c++){ d=0; memset(pict[0],'.',(w+2)*sizeof(pict[0])); memset(pict[h+1],'.',(w+2)*sizeof(pict[0])); for(i=1;i<=h;i++){ scanf("%s ",&pict[i][1]); pict[i][0]=pict[i][w+1]='.'; } for(i=1;i<=h;i++) for(j=1;j<=w;j++) if(pict[i][j]!='.'){ p=0; visit(i,j); /* printf("D:%d,%d:%d\n",i,j,p);*/ sol[d]=p; d++; } printf("Throw %d\n",c); qsort(sol,d,sizeof(sol[0]),cmp); for(i=0;i