class Solution {public:    int uniquePathsWithObstacles(vector<vector<int>>& obstacleGrid) {        int m = obstacleGrid.size();        int n = obstacleGrid[0].size();        vector<vector<int> > dp(m+1, vector<int>(n+1, 0));        dp[0][0] = obstacleGrid[0][0] == 0? 1: 0;        for(int i = 1; i< m; i++){            dp[i][0] = dp[i-1][0]>0 && obstacleGrid[i][0] == 0? 1: 0;        }        for(int j = 1; j< n; j++){            dp[0][j] = dp[0][j-1]>0 &&obstacleGrid[0][j] == 0? 1: 0;        }        for(int i = 1; i<m; i++){            for(int j = 1; j<n; j++){                if(obstacleGrid[i][j] == 1){                    dp[i][j]= 0;                }else{                    dp[i][j] = dp[i][j-1] + dp[i-1][j];                }            }        }        return dp[m-1][n-1];    }};