fork download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. int n, m, a[51][51], visited[51][51], y, x, ret = -987654321;
  4. char b;
  5. queue<pair<int, int>> q;
  6. int dy[] = {-1, 0, 1, 0};
  7. int dx[] = {0, 1, 0, -1};
  8. int main(){
  9. cin >> n >> m;
  10. for(int i = 0; i < n; i++){
  11. for(int j = 0; j < m; j++){
  12. cin >> b;
  13. if(b == 'W') a[i][j] = 1;
  14. else if(b == 'L') a[i][j] = 0;
  15. }
  16. }
  17.  
  18. for(int i = 0; i < n; i++){
  19. for(int j = 0; j < m; j++){
  20. if(!a[i][j]){
  21. q.push({i, j});
  22. visited[i][j] = 1;
  23. }
  24. while(q.size()){
  25. tie(y, x) = q.front();
  26. q.pop();
  27. for(int i = 0; i < 4; i++){
  28. int ny = y + dy[i];
  29. int nx = x + dx[i];
  30. if(ny < 0 || ny >= n || nx < 0 || nx <= m || visited[ny][nx] || a[ny][nx]) continue;
  31. q.push({ny, nx});
  32. visited[ny][nx] = visited[y][x] + 1;
  33. ret = max(ret, visited[ny][nx]);
  34. }
  35. }
  36. }
  37. }
  38. cout << ret - 1 << '\n';
  39. }
Success #stdin #stdout 0s 5320KB
stdin
5 7
WLLWWWL
LLLWLLL
LWLWLWW
LWLWLLL
WLLWLWW
stdout
-987654322