classSolution{public:intregionsBySlashes(vector<string>&grid){constintn=grid.size();// G := upscaled gridvector<vector<int>>g(n*3,vector<int>(n*3));for(inti=0;i<n;++i)for(intj=0;j<n;++j)if(grid[i][j]=='/'){g[i*3][j*3+2]=1;g[i*3+1][j*3+1]=1;g[i*3+2][j*3]=1;}elseif(grid[i][j]=='\\'){g[i*3][j*3]=1;g[i*3+1][j*3+1]=1;g[i*3+2][j*3+2]=1;}intans=0;for(inti=0;i<n*3;++i)for(intj=0;j<n*3;++j)if(g[i][j]==0){dfs(g,i,j);++ans;}returnans;}private:voiddfs(vector<vector<int>>&g,inti,intj){if(i<0||i==g.size()||j<0||j==g[0].size())return;if(g[i][j]!=0)return;g[i][j]=2;// Mark 2 as visiteddfs(g,i+1,j);dfs(g,i-1,j);dfs(g,i,j+1);dfs(g,i,j-1);}};
classSolution{publicintregionsBySlashes(String[]grid){finalintn=grid.length;// G := upscaled gridint[][]g=newint[n*3][n*3];for(inti=0;i<n;++i)for(intj=0;j<n;++j)if(grid[i].charAt(j)=='/'){g[i*3][j*3+2]=1;g[i*3+1][j*3+1]=1;g[i*3+2][j*3]=1;}elseif(grid[i].charAt(j)=='\\'){g[i*3][j*3]=1;g[i*3+1][j*3+1]=1;g[i*3+2][j*3+2]=1;}intans=0;for(inti=0;i<n*3;++i)for(intj=0;j<n*3;++j)if(g[i][j]==0){dfs(g,i,j);++ans;}returnans;}privatevoiddfs(int[][]g,inti,intj){if(i<0||i==g.length||j<0||j==g[0].length)return;if(g[i][j]!=0)return;g[i][j]=2;// Mark 2 as visiteddfs(g,i+1,j);dfs(g,i-1,j);dfs(g,i,j+1);dfs(g,i,j-1);}}