
// Problem: Oil Deposits // Contest: HDOJ // URL: http://acm.hdu.edu.cn/showproblem.php?pid=1241 // Memory Limit: 65 MB // Time Limit: 2000 ms // // Powered by CP Editor (https://cpeditor.org) #includeusing namespace std; const int N = 105; int n, m; char a[N][N]; int dir[8][2] = {{1, 0}, {-1, 0}, {1, 1}, {1, -1}, {-1, -1}, {-1, 1}, {0, 1}, {0, -1}}; bool ok(int x, int y) { if (x < 1 || x > n || y < 1 || y > m) return false; return true; } void dfs(int x, int y) { a[x][y] = '*'; for (int i = 0; i < 8; i++) { x += dir[i][0]; y += dir[i][1]; if (ok(x, y) && a[x][y] == '@') { dfs(x, y); } } } int main() { while (cin >> n >> m, n) { for (int i = 1; i <= n; i++) { for (int j = 1; j <= m; j++) { cin >> a[i][j]; } getchar(); } int count = 0; for (int i = 1; i <= n; i++) { for (int j = 1; j <= m; j++) { if (a[i][j] == '@') { dfs(i, j); count++; } } } printf("%dn", count); } }