#include FILE * f; int ntest=0; int h,w; char Map[60][60]; bool passato[60][60]; int res[10000]; int nres=0; void MarcaSegno (int x, int y) { if (x<0 || y<0 || x>=w || y>=h) return; if (passato[x][y]) return; if (Map[x][y]=='X') { passato[x][y]=false; Map[x][y]='*'; MarcaSegno (x-1,y); MarcaSegno (x+1,y); MarcaSegno (x,y-1); MarcaSegno (x,y+1); } } int conta (int x, int y) { int npunti=0; if (x<0 || y<0 || x>=w || y>=h) return 0; if (Map[x][y]=='*' && passato[x][y]) return 0; if (Map[x][y]=='.') { passato[x][y]=true; return 0; } if (Map[x][y]=='X') { if (!passato[x][y]) { MarcaSegno (x,y); npunti=1; } } passato[x][y]=true; return npunti+conta (x-1,y)+ conta (x+1,y)+ conta (x,y-1)+ conta (x,y+1); } int main () { ntest=0; int x,y; char c; int i; f=fopen ("dice.in","r"); while (1) { fscanf (f,"%d %d",&w,&h); nres=0; if (h+w==0) return 0; for (y=0;yres[y]) { int t=res[x]; res[x]=res[y]; res[y]=t; } ntest++; printf ("Throw %d\n",ntest); for (i=0;i