Start: Dec, 04, 2016 12:00:00
杭州师范大学第十届程序设计竞赛—正式
End: Dec, 04, 2016 17:00:00
Time elapsed:
Time remaining:

Problem_ID: J
Result: Accepted
Time: 1ms
Memory: 2080kB
In contest: 1075

#include<cstdio>
#include<iostream>
#include<string>
#include<cstring>
#include<algorithm>
#include<vector>
#include<stack>
#include<queue>
#include<map>
#include<set>
#include<cmath>
using namespace std;
int n,m,tmp=0,vis[105][105];
char g[105][105];
int to[4][2]={{-1,0},{0,-1},{1,0},{0,1}};
void dfs(int x ,int y){//x hang y lie
	for(int i=0;i<4;i++){
		int tx=x+to[i][0];
		int ty=y+to[i][1];
		if(tx>=2&&tx<=n-1&&ty>=2&&ty<=m-1&&g[tx][ty]=='.'){
			g[tx][ty]='*';
			dfs(tx,ty);
		}
	}
	return ;
}

int main(){
	cin>>n>>m;getchar();
	for(int i=1;i<=n;i++){
		/*for(int j=1;j<=m;j++){
			scanf("%c",&g[i][j]);
		}*/
		//getchar();
		scanf("%s",g[i]+1);
	}
	

	memset(vis,0,sizeof(vis));
	//yuchuli
	//shuzhe
	for(int i=1;i<=n;i++){
		if(g[i][1]=='.'){
			g[i][1]='*';
			dfs(i,1);
		}
		if(g[i][m]=='.'){
			g[i][m]='*';
			dfs(i,m);
		}
	}
	//hengzhe
	for(int j=1;j<=m;j++){
		if(g[1][j]=='.'){
			g[1][j]='*';
			dfs(1,j);
		}
		if(g[n][j]=='.'){
			g[n][j]='*';
			dfs(n,j);
		}
	}




	int ans=0;
	for(int i=2;i<=n-1;i++){
		for(int j=2;j<=m-1;j++){
			if(g[i][j]=='.'){
				ans++;
				g[i][j]='*';
				dfs(i,j);
			}
		}
	}


	cout<<ans<<endl;

	return 0;
}