记录编号 |
115075 |
评测结果 |
AAAAAAAAAA |
题目名称 |
[UVa 572] 油田 |
最终得分 |
100 |
用户昵称 |
Bokjan |
是否通过 |
通过 |
代码语言 |
C++ |
运行时间 |
0.004 s |
提交时间 |
2014-08-13 18:47:06 |
内存使用 |
0.32 MiB |
显示代码纯文本
#include <fstream>
const int maxn = 101;
int ans;
bool g[maxn][maxn];
namespace std
{
ifstream fin("oild.in");
ofstream fout("oild.out");
}
void Clear(int x, int y)
{
for(int i = 0; i <= x + 1; i++)
for(int j = 0; j <= y + 1; j++)
g[i][j] = false;
ans = 0;
}
void dfs(int x, int y)
{
if(!g[x][y])
return;
g[x][y] = false;
dfs(x - 1, y - 1);dfs(x - 1, y);dfs(x - 1, y + 1);
dfs(x, y - 1); /*dfs(x, y);*/ dfs(x, y + 1);
dfs(x + 1, y - 1);dfs(x + 1, y);dfs(x + 1, y + 1);
}
int main(void)
{
int m, n;
for(;;)
{
std::fin >> m >> n;
if(!m && !n)
break;
Clear(n, m);
for(int i = 1; i <= m; i++)
{
char row[maxn] = {0};
std::fin >> row;
for(int j = 0; j < n; j++)
if('@' == row[j])
g[i][j + 1] = true;
}
for(int i = 1; i <= m; i++)
for(int j = 1; j <= n; j++)
if(g[i][j])
{
ans++;
dfs(i, j);
}
std::fout << ans << std::endl;
}
std::fin.close();
std::fout.close();
return 0;
}