| 记录编号 |
420213 |
评测结果 |
AAAAAAAAAA |
| 题目名称 |
1647.[UVa 572] 油田 |
最终得分 |
100 |
| 用户昵称 |
Hyoi_0Koto |
是否通过 |
通过 |
| 代码语言 |
C++ |
运行时间 |
0.000 s |
| 提交时间 |
2017-07-04 08:50:00 |
内存使用 |
0.00 MiB |
显示代码纯文本
#include<cstdio>
#include<cmath>
#include<iostream>
#include<algorithm>
#include<cstring>
#define XLM
using namespace std;
const int maxn=110;
//variable
int m,n,G[maxn][maxn],a[maxn][maxn],ans;
char temp;
//input_data
inline void in(){
#ifdef XLM
freopen("oild.in","r",stdin);
freopen("oild.out","w",stdout);
#endif
}
//clear before deal
inline void init(){
//memset(a,-1,sizeof(char));
memset(G,0,sizeof(int));
ans=0;
}
//dfs to find the oil deposit
inline void dfs(int x,int y){
if (!G[x][y]) return;
G[x][y]=0;
dfs(x-1,y-1);dfs(x-1,y);dfs(x-1,y+1);
dfs(x,y-1);dfs(x,y+1);
dfs(x+1,y-1);dfs(x+1,y);dfs(x+1,y+1);
}
//circulate to calculate
inline void deal(){
while (scanf("%d%d",&m,&n)==2&&m&&n){
init();
for (int i=1;i<=m;i++){
for (int j=1;j<=n;j++){
cin>>temp;
if (temp=='@') G[i][j]=1;
else G[i][j]=0;
}
}
//seedfill
for (int i=1;i<=m;i++){
for (int j=1;j<=n;j++){
if (G[i][j]){
ans++;
dfs(i,j);
}
}
}
printf("%d\n",ans);
}
}
//main
int Main(){
in();
deal();
return 0;
}
int xlm=Main();
int main(){;}