@inkysakura
2017-04-26T17:58:24.000000Z
字数 563
阅读 1355
CODE
#include <iostream>
#include <cstring>
using namespace std;
char g[25][25];
bool vis[25][25];
int w,h;
int cx,cy,ans,nCase;
int d[][2]={1,0,-1,0,0,1,0,-1};
void dfs(int x,int y)
{
vis[x][y]=1;
ans++;
for(int i=0;i<4;i++)
{
int cx=x+d[i][1];
int cy=y+d[i][0];
if(cx<0||cx>=h||cy<0||cy>=w||vis[cx][cy]||g[cx][cy]!='.')continue;
dfs(cx,cy);
}
}
int main()
{
int t;
cin >>t;
while(t--)
{
ans=0;
memset(vis,0,sizeof(vis));
cin >> w >> h;
for(int i=0;i<h;i++)
cin >>g[i];
for(int i=0;i<h;i++)
for(int j=0;j<w;j++)
if(g[i][j]=='@')
{
cx=i;
cy=j;
g[i][j]='.';
}
dfs(cx,cy);
cout << "Case "<<++nCase<<": "<<ans<<endl;
}
return 0;
}