Code: Select all
#include<stdio.h>
#include<string.h>
char str[120];
char A[120][120], B[120][120];
int N, count, M;
int rx[]={-1, -1, -1, 0, 0, 1, 1, 1};
int ry[]={-1, 0, 1, -1, 1, -1, 0, 1};
void traverse(int x, int y)
{
int dx, dy, i;
count++;
B[x][y]=1;
for( i = 0; i < 8; i++) {
dx = x + rx[i];
dy = y + ry[i];
if(dx>=0 && dx<N && dy>=0 && dy<M && A[dx][dy]=='W' && B[dx][dy]==0)
traverse(dx, dy);
}
}
void readCase()
{
int i = 0, flag = 0, j, k, p, l;
//memset(B, 0, sizeof(B));
memset(A, 0, sizeof(A));
while(1) {
gets(str);
l = strlen(str);
if(!l) {
break;
}
if(str[0]=='W' || str[0] == 'L')
{
strcpy(A[i], str);
//strcpy(B[i], A[i]);
M = l;
}
else {
sscanf(str, "%d %d", &j, &k);
if(flag==0) {
N= i;
flag = 1;
}
count=0;
if((j-1)>= 0 && (k-1) >=0 && A[j-1][k-1] == 'W') {
memset(B, 0, sizeof(B));
traverse(j-1,k-1);
}
printf("%d\n", count);
}
i++;
}
}
int main()
{
int T, Case;
scanf("%d", &T);
getchar();
getchar();
for(Case = 1; Case <= T; Case++) {
readCase();
}
return 0;
}