#include<iostream>
#include<cstdio>
#include<queue>
#include<cstring>
#define M 105
using namespace std;
int area,color[M][M],m,n;
char Land[M][M],inp[M];
int next[8][2]={{-1,0},{-1,-1},{0,-1},{1,1},{1,0},{1,-1},{0,1},{-1,1}};
queue<int>Q;
void BFS(int,int);
int main()
{
int t,k,l,sx,sy;
//freopen("in.txt","r",stdin);
scanf("%d\n\n",&t);
for(k=1;k<=t;k++)
{
m=0;
while(gets(inp))
{
for(l=0;inp[l];l++);
if(!l)break;
if(inp[0]=='L' || inp[0]=='W')
sscanf(inp,"%s",Land[m++]);
else
{
sscanf(inp,"%d%d",&sx,&sy);
BFS(sx-1,sy-1);
printf("%d\n",area);
}
}
if(k!=t)printf("\n");
}
return 0;
}
void BFS(int sx,int sy)
{
int i,x,y,tx,ty;
for(n=0;Land[0][n];n++);
if(Land[sx][sy]=='L'||sx>=m||sy>=n){area=0;return;}
memset(color,0,sizeof(color));
color[sx][sy]=1;area=1;
Q.push(sx);
Q.push(sy);
while(!Q.empty())
{
x=Q.front();Q.pop();
y=Q.front();Q.pop();
for(i=0;i<8;i++)
{
tx=x+next[i][0];
ty=y+next[i][1];
if(tx>=0&&tx<m&&ty>=0&&ty<n)
{
if(color[tx][ty]==0&&Land[tx][ty]=='W')
{
color[tx][ty]=1;
area++;
Q.push(tx);
Q.push(ty);
}
}
}
}
}
#include<cstdio>
#include<queue>
#include<cstring>
#define M 105
using namespace std;
int area,color[M][M],m,n;
char Land[M][M],inp[M];
int next[8][2]={{-1,0},{-1,-1},{0,-1},{1,1},{1,0},{1,-1},{0,1},{-1,1}};
queue<int>Q;
void BFS(int,int);
int main()
{
int t,k,l,sx,sy;
//freopen("in.txt","r",stdin);
scanf("%d\n\n",&t);
for(k=1;k<=t;k++)
{
m=0;
while(gets(inp))
{
for(l=0;inp[l];l++);
if(!l)break;
if(inp[0]=='L' || inp[0]=='W')
sscanf(inp,"%s",Land[m++]);
else
{
sscanf(inp,"%d%d",&sx,&sy);
BFS(sx-1,sy-1);
printf("%d\n",area);
}
}
if(k!=t)printf("\n");
}
return 0;
}
void BFS(int sx,int sy)
{
int i,x,y,tx,ty;
for(n=0;Land[0][n];n++);
if(Land[sx][sy]=='L'||sx>=m||sy>=n){area=0;return;}
memset(color,0,sizeof(color));
color[sx][sy]=1;area=1;
Q.push(sx);
Q.push(sy);
while(!Q.empty())
{
x=Q.front();Q.pop();
y=Q.front();Q.pop();
for(i=0;i<8;i++)
{
tx=x+next[i][0];
ty=y+next[i][1];
if(tx>=0&&tx<m&&ty>=0&&ty<n)
{
if(color[tx][ty]==0&&Land[tx][ty]=='W')
{
color[tx][ty]=1;
area++;
Q.push(tx);
Q.push(ty);
}
}
}
}
}
No comments:
Post a Comment
Note: Only a member of this blog may post a comment.