HDU 1241(DFS)

来源:互联网 发布:zenjoy怎么样 知乎 编辑:程序博客网 时间:2024/06/05 17:45

跟POJ 2386一样的题。。
注意各个方向遍历的边界!注意输入边界!

#include <cstdio>#include <iostream>#include <cstring>using namespace std;const int N=105;char map[N][N];int n,m,ans;void dfs(int x,int y){    map[x][y]='*';    for(int dx=-1;dx<=1;dx++){        for(int dy=-1;dy<=1;dy++){            int ax=x+dx,ay=y+dy;            if(ax>=0&&ax<m&&ay>=0&&ay<n&&map[ax][ay]=='@'){                dfs(ax,ay);            }        }    }}int main(){//  freopen("1.in","r",stdin);//  freopen("1.out","w",stdout);    while(~scanf("%d %d",&m,&n)&&m){//      system("pause");        ans=0;        memset(map,0,sizeof(map));        for(int i=0;i<m;i++){            scanf("%s",&map[i]);        }        for(int i=0;i<m;i++){            for(int j=0;j<n;j++){                if(map[i][j]=='@'){                    dfs(i,j);                    ans++;                }             }        }        printf("%d\n",ans);    }}
0 0