/* 2004年 7月 3日 土曜日 18時45分17秒 JST */ /* 2004年 7月 3日 土曜日 18時52分28秒 JST */ #include int main() { int W, H, i, j, f, d, count; int dx[4] = {0, 1, 0, -1}; int dy[4] = {1, 0, -1, 0}; char map[32][32]; char s[32]; while (1) { gets(s); sscanf(s, "%d %d", &W, &H); if (W == 0 && H == 0) { break; } for (i = 0; i < 30; i++) { strcpy(map[i], "##############################"); } for (i = 0; i < H; i++) { gets(&map[i+1][1]); map[i+1][W+1] = '#'; map[i+1][W+2] = '\0'; } count = 1; while (1) { f = 0; for (i = 1; i <= H; i++) { for (j = 1; j <= W; j++) { if (map[i][j] == '@') { for (d = 0; d < 4; d++) { if (map[i+dy[d]][j+dx[d]] == '.') { map[i+dy[d]][j+dx[d]] = '@'; count++; f = 1; } } } } } if (!f) { break; } } printf("%d\n", count); } return 0; }