[关闭]
@inkysakura 2017-04-26T17:58:24.000000Z 字数 563 阅读 1355

lightoj1012

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;
}
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注