Simple BFS Solution in Cpp
```\n#define vv vector>\n#define v vector\n\nclass Solution {\npublic:\n    vector> highestPeak(vector>& isWater) {\n        \n        int m=isWater.size(),n=is
```\n#define vv vector<vector<int>>\n#define v vector<int>\n\nclass Solution {\npublic:\n    vector<vector<int>> highestPeak(vector<vector<int>>& isWater) {\n        \n        int m=isWater.size(),n=isWater[0].size();\n        vv ans(m,v(n)),vis(m,v(n));\n        \n        queue<pair<int,int>>q;\n        \n        for(int i=0;i<m;i++){\n            for(int j=0;j<n;j++){\n                if(isWater[i][j]){\n                    ans[i][j]=0;\n                    q.push({i,j});\n                    vis[i][j]=1;\n                }\n            }\n        }\n        \n        v row={-1,1,0,0};\n        v col={0,0,-1,1};\n        \n        while(!q.empty()){\n            auto ele=q.front();\n            q.pop();\n            int i=ele.first,j=ele.second;\n            \n            for(int k=0;k<4;k++){\n                int r=row[k]+i,c=col[k]+j;\n                if(r>=0 && c>=0 && r<m && c<n && !vis[r][c] && isWater[r][c]==0){\n                    ans[r][c]=1+ans[r-row[k]][c-col[k]];\n                    q.push({r,c});\n                    vis[r][c]=1;\n                }\n            }\n        }\n        \n        return ans;\n    }\n};
['Breadth-First Search', 'C++']