您的位置:首页 > 其它

UVa 572 Oil Deposits (递归版)

2010-03-16 12:44 411 查看
/*
coder: ACboy
date:2010-3-16
result: 1A
description: UVa 572 Oil Deposits
*/

#include <iostream>
using namespace std;

int m, n;

int data[256][256];
int vis[256][256];

int dx[] = {0, 1, -1, 1, 0, -1, 1, -1};
int dy[] = {1, 0, 1, -1, -1, 0, 1, -1};

//深度优先遍历
void dfs(int x, int y) {
vis[x][y] = 1;
int newx, newy;
for (int i = 0; i < 8; ++i) {
newx = x + dx[i];
newy = y + dy[i];
if (newx >= 0 && newx < m && newy >= 0 && newy < n && !vis[newx][newy] && data[newx][newy]) {
vis[newx][newy] = 1;
dfs(newx, newy);
}
}
}

int main()
{
#ifndef ONLINE_JUDGE
freopen("572.txt", "r", stdin);
#endif
while (cin >> m >> n) {
if (n == m && m == 0) break;
int i, j;
char temp;
for (i = 0; i < m; ++i)
{
for (j = 0; j < n; ++j) {
cin >> temp;
if (temp == '*') {
data[i][j] = 0;
} else {
data[i][j] = 1;
}
}
}
memset(vis, 0, sizeof(vis));
int count = 0;
for (i = 0; i < m; ++i) {
for (j = 0; j < n; j++) if(!vis[i][j] && data[i][j]){
count++;
dfs(i, j);
}
}
cout << count << endl;
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  2010