hdu 1241 DFS
来源:互联网 发布:app数据统计模板 编辑:程序博客网 时间:2024/05/01 13:38
#include <iostream>#include <cstring>#include <cstdio>using namespace std;char map[105][105];int xx[8]={0,1,0,-1,1,-1,1,-1};int yy[8]={1,0,-1,0,1,-1,-1,1};int s=0;void DFS(int i,int j);void DFS_Tra(int n,int m){ int i,j; for(i=1;i<=n;i++) { for(j=1;j<=m;j++) { if(map[i][j]!='*') { DFS(i,j); s++; } } }}void DFS(int i,int j){ int k,t1,t2; map[i][j]='*'; for(k=0;k<8;k++) { t1=i+xx[k]; t2=j+yy[k]; if(map[t1][t2]=='*') continue; DFS(t1,t2); }}int main(){ int n,m; while(scanf("%d%d",&n,&m)) { if(n==0&&m==0) break; int i; s=0; for(i=1;i<=n;i++) { scanf("%s",map[i]+1); } for(i=0;i<=n+1;i++) map[i][0]=map[i][m+1]='*'; for(i=0;i<=m+1;i++) map[0][i]=map[n+1][i]='*'; DFS_Tra(n,m); printf("%d\n",s); } return 0;}