#include<bits/stdc++.h>
using namespace std;
int counter,w,h;
char str[53][53];
void dfs1(int i,int j)
{
if(i<0||j<0||i>=h||j>=w)
{
return;
}
if(str[i][j]!='X')
{
return;
}
str[i][j]='.';
dfs1(i,j+1);
dfs1(i,j-1);
dfs1(i+1,j);
dfs1(i-1,j);
return;
}
void dfs(int i,int j)
{
if(i<0||j<0||i>=h||j>=w)
{
return;
}
if(str[i][j]=='.')
{
return;
}
if(str[i][j]=='X')
{
counter++;
dfs1(i,j);
}
str[i][j]='.';
dfs(i,j+1);
dfs(i,j-1);
dfs(i+1,j);
dfs(i-1,j);
return;
}
int main()
{
int i,j,k,test=0,arr[53];
while(scanf("%d%d",&w,&h)==2)
{
if(w==0 && h==0)
{
break;
}
getchar();
for(i=0; i<h; i++)
{
for(j=0; j<w; j++)
{
scanf("%c",&str[i][j]);
}
getchar();
}
k=0;
for(i=0; i<h; i++)
{
for(j=0; j<w; j++)
{
if(str[i][j]!='.')
{
counter=0;
dfs(i,j);
if(counter>0)
{
arr[k]=counter;
k++;
}
counter=0;
}
}
}
sort(arr,arr+k);
printf("Throw %d\n",++test);
if(arr[0]>0)
{
printf("%d",arr[0]);
}
for(i=1; i<k; i++)
{
printf(" %d",arr[i]);
}
printf("\n\n");
memset(arr,0,sizeof(arr));
}
return 0;
}
using namespace std;
int counter,w,h;
char str[53][53];
void dfs1(int i,int j)
{
if(i<0||j<0||i>=h||j>=w)
{
return;
}
if(str[i][j]!='X')
{
return;
}
str[i][j]='.';
dfs1(i,j+1);
dfs1(i,j-1);
dfs1(i+1,j);
dfs1(i-1,j);
return;
}
void dfs(int i,int j)
{
if(i<0||j<0||i>=h||j>=w)
{
return;
}
if(str[i][j]=='.')
{
return;
}
if(str[i][j]=='X')
{
counter++;
dfs1(i,j);
}
str[i][j]='.';
dfs(i,j+1);
dfs(i,j-1);
dfs(i+1,j);
dfs(i-1,j);
return;
}
int main()
{
int i,j,k,test=0,arr[53];
while(scanf("%d%d",&w,&h)==2)
{
if(w==0 && h==0)
{
break;
}
getchar();
for(i=0; i<h; i++)
{
for(j=0; j<w; j++)
{
scanf("%c",&str[i][j]);
}
getchar();
}
k=0;
for(i=0; i<h; i++)
{
for(j=0; j<w; j++)
{
if(str[i][j]!='.')
{
counter=0;
dfs(i,j);
if(counter>0)
{
arr[k]=counter;
k++;
}
counter=0;
}
}
}
sort(arr,arr+k);
printf("Throw %d\n",++test);
if(arr[0]>0)
{
printf("%d",arr[0]);
}
for(i=1; i<k; i++)
{
printf(" %d",arr[i]);
}
printf("\n\n");
memset(arr,0,sizeof(arr));
}
return 0;
}
0 comments: (+add yours?)
Post a Comment