ZOJ 2165 Red and Black(DFS,水题)

来源:互联网 发布:json.dumps python 编辑:程序博客网 时间:2024/06/06 02:26
#include<stdio.h>#include<string.h>#include<algorithm>using namespace std;const int maxm=50;char map[maxm][maxm];int vis[maxm][maxm];int m,n;int cnt;int dir[4][2]= {{1,0},{-1,0},{0,1},{0,-1}};void dfs(int x,int y){    for(int i=0; i<4; i++)    {        int x1=x+dir[i][0];        int y1=y+dir[i][1];        if(x1>=0&&x1<n&&y1>=0&&y1<m&&!vis[x1][y1]&&map[x1][y1]!='#')        {            vis[x1][y1]=1;            cnt++;            dfs(x1,y1);        }    }    return;}int main(){    while(scanf("%d%d",&m,&n)!=EOF&&(m||n))    {        memset(vis,0,sizeof(vis));        int a,b;        for(int i=0; i<n; i++)        {            scanf("%s",map[i]);            for(int j=0; j<m; j++)            {                if(map[i][j]=='@')                {                    a=i;                    b=j;                }            }        }        cnt=0;        vis[a][b]=1;        dfs(a,b);        printf("%d\n",cnt+1);    }    return 0;}

0 0