#include <bits/stdc++.h> using namespace std; int dirX[] = {1, 0, -1, 0, 1, -1, 1, -1}; int dirY[] = {0, 1, 0, -1, 1, -1, -1, 1}; int row, col, cnt, vis[103][103]; string grid[103]; int dfs(int i, int j){ if(i < 0 || i >= row || j < 0 || j >= col || grid[i][j] == 'L' || vis[i][j])return 0; vis[i][j] = 1; cnt++; for(int z = 0; z < 8; z++){ int px = i+dirX[z]; int py = j+dirY[z]; dfs(px, py); } return cnt; } int main(){ int t, cs = 0; bool sp = false; string s; cin >> t; getchar(); getchar(); while(t--){ int x, y; row = 0; if(sp)puts(""); sp = true; while(getline(cin, s) && s.size()){ if(s[0] == 'L' || s[0] == 'W'){ grid[row] = s; col = grid[row++].size(); } else{ cnt = 0; istringstream cinn(s); cinn >> x; cinn >> y; memset(vis, 0, sizeof(vis)); cout << dfs(x-1, y-1) << endl; } } } return 0;
}
No comments:
Post a Comment