Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class Solution {
- public:
- bool dfs(vector<vector<int>> &grid, int t, int r, int c) {
- int n = grid.size();
- if (r < 0 || r >= n ||
- c < 0 || c >= n ||
- grid[r][c] > t || grid[r][c] < 0)
- return false;
- if (r == n-1 && c == n-1)
- return true;
- grid[r][c] = -1;
- int dir[] = {0, 1, 0, -1, 0};
- for (int i = 0; i < 4; ++i) {
- int x = r+dir[i], y = c+dir[i+1];
- if (dfs(grid, t, x, y))
- return true;
- }
- return false;
- }
- int swimInWater(vector<vector<int>>& grid) {
- int n = grid.size(), l = 0, r = n*n-1;
- while (l < r) {
- int m = (r-l)/2+l;
- vector<vector<int>> tmp = grid;
- if (dfs(tmp, m, 0, 0)) {
- r = m;
- } else {
- l = m+1;
- }
- }
- return r;
- }
- };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement