#include <iostream>
#include <algorithm>
#include <queue>
#include <vector>
#include <cstring>
#include <string>
#include <string.h>
#include <stdio.h>
#include <cmath>
#include <map>
#include <functional>
#include <set>
using namespace std;
//1460
char maze[101][101];
bool mark[191][101];
int n,m;
int go[][2]={1,0,-1,0,0,1,0,-1,1,1,1,-1,-1,-1,-1,1};
void DFS(int x,int y){
for(int i=0;i<8;i++){
int nx=x+go[i][0];
int ny=y+go[i][1];
if(nx<1 || nx>n || ny<1 || ny>m)
continue;
if(maze[nx][ny]=='*')
continue;
if(mark[nx][ny]==true)
continue;
mark[nx][ny]=true;
DFS(nx,ny);
}
return ;
}
int main(){
while(scanf("%d%d",&n,&m)!=EOF){
if(n==0 && m==0) break;
for(int i=1;i<=n;i++){
scanf("%s",maze[i]+1);
}
for(int i=1;i<=n;i++){//初始化所有位置
for(int j=1;j<=m;j++){
mark[i][j]=false;
}
}
int ans=0;
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
if(mark[i][j]==true) continue;
if(maze[i][j]=='*') continue;
DFS(i,j);
ans++;
}
}
printf("%d\n",ans);
}
return 0;
}
/**************************************************************
Problem: 1460
User: cust123
Language: C++
Result: Accepted
Time:10 ms
Memory:1548 kb
****************************************************************/
题目1460:Oil Deposit
最新推荐文章于 2020-02-25 01:23:34 发布