//dfs连通图
#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;
int m,n;
const int maxn=105;
char p[maxn][maxn];
int bol[maxn][maxn];
int x[]={0,0,-1,-1,-1,1,1,1};
int y[]={-1,1,-1,0,1,-1,0,1};
void dfs(int a,int b){
for(int i=0;i<8;i++){
int x1=a+x[i];
int y1=b+y[i];
if(x1>=0&&x1<m&&y1>=0&&y1<n&&p[x1][y1]=='@'&&bol[x1][y1]==0)
bol[x1][y1]=1,dfs(x1,y1);
}
}
void dis(){
for(int i=0;i<m;i++){
for(int j=0;j<n;j++)
cout<<bol[i][j]<<" ";
cout<<endl;
}
}
int main(){
while(cin>>m>>n&&m){
for(int i=0;i<m;i++)
for(int j=0;j<n;j++)
cin>>p[i][j];
int cnt=0;
memset(bol,0,sizeof(bol));
for(int i=0;i<m;i++){
for(int j=0;j<n;j++){
if(p[i][j]=='@'&&bol[i][j]==0)
bol[i][j]=1,cnt++,dfs(i,j);
}
}
cout<<cnt<<endl;
}
return 0;
}
UVA - 572
最新推荐文章于 2022-08-06 20:30:21 发布