Advertisement
nikunjsoni

778-2

Apr 28th, 2021
117
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.95 KB | None | 0 0
  1. class Solution {
  2. public:
  3.     bool dfs(vector<vector<int>> &grid, int t, int r, int c) {
  4.         int n = grid.size();
  5.         if (r < 0 || r >= n ||
  6.             c < 0 || c >= n ||
  7.             grid[r][c] > t || grid[r][c] < 0)
  8.             return false;
  9.        
  10.         if (r == n-1 && c == n-1)
  11.             return true;
  12.        
  13.         grid[r][c] = -1;
  14.         int dir[] = {0, 1, 0, -1, 0};
  15.         for (int i = 0; i < 4; ++i) {
  16.             int x = r+dir[i], y = c+dir[i+1];
  17.             if (dfs(grid, t, x, y))
  18.                 return true;
  19.         }
  20.         return false;
  21.     }
  22.    
  23.     int swimInWater(vector<vector<int>>& grid) {
  24.         int n = grid.size(), l = 0, r = n*n-1;
  25.         while (l < r) {
  26.             int m = (r-l)/2+l;
  27.             vector<vector<int>> tmp = grid;
  28.             if (dfs(tmp, m, 0, 0)) {
  29.                 r = m;
  30.             } else {
  31.                 l = m+1;
  32.             }
  33.         }
  34.         return r;
  35.     }
  36. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement