记录编号 536998 评测结果 AAAAAAAAAA
题目名称 [UVa 572] 油田 最终得分 100
用户昵称 Gravatar牛掰格拉斯 是否通过 通过
代码语言 C++ 运行时间 0.009 s
提交时间 2019-07-09 09:48:31 内存使用 13.68 MiB
显示代码纯文本
//2019.7.8
#include<bits/stdc++.h>
using namespace std;
int m,n,x[8]={1,0,0,-1,1,1,-1,-1},y[8]={0,-1,1,0,1,-1,-1,1}; 
bool used[101][101];
char a[101][101];
int check(int x,int y)      //这个东西很重要,没有它就输不出来数! 
{                           //虽然我也不知道为什么??? 
    if(x<1||x>m||y<1||y>n)
        return 0;
    return 1;
}
void dfs(int g,int h)
{
	for(int i=0;i<8;i++)
	{
		int xx=g+x[i],yy=h+y[i];
		if(check(xx,yy)&&a[xx][yy]=='@'&&used[xx][yy]==0)
		{
			used[xx][yy]=1;
			dfs(xx,yy);
		}
	}	
}
int main()
{
	freopen("oild.in","r",stdin);
	freopen("oild.out","w",stdout);
	while(1)
	{
		int s=0;
		cin>>m>>n;
		if(m==0&&n==0)		break;
		memset(used,0,sizeof(used));
		memset(a,-1,sizeof(a));
		for(int i=1;i<=m;i++)
		for(int j=1;j<=n;j++)
			cin>>a[i][j];
		for(int i=1;i<=m;i++)
		{
			for(int j=1;j<=n;j++)
			{
				if(a[i][j]=='@'&&used[i][j]==0)		
				{
					s=s+1;
					used[i][j]=1;
					dfs(i,j);
				}
			}
		}
		cout<<s<<endl;
	}
	return 0;
}