Advertisement
Singasking

Untitled

Jun 22nd, 2023
785
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.62 KB | None | 0 0
  1. class Solution {
  2. public:
  3.  
  4. void bfs(int row,int col, vector<vector<int>> &vis, vector<vector<char>> &grid){
  5.         vis[row][col]=1;
  6.         queue<pair<int,int>> q;
  7.         int n = grid.size();
  8.         int m = grid[0].size();
  9.         q.push({row,col});
  10.         while(!q.empty()){
  11.             int row = q.front().first;
  12.             int col = q.front().second;
  13.             q.pop();
  14.         //for neighbouring elements or cell.
  15.         //you could use direct indexes too :)
  16.             for(int del_row=-1;del_row<=1;del_row++){
  17.                 for(int del_col=-1;del_col<=1;del_col++){
  18.             //not to check the diagonal elements.
  19.                     if((del_row==-1&&del_col==-1) || (del_row==-1&&del_col==1) || (del_row==1&&del_col==-1) || (del_row==1&&del_col==1)){
  20.                         continue;
  21.                     }
  22.                     int nrow=row+del_row;
  23.                     int ncol=col+del_col;
  24.                     if(nrow>=0 && nrow<n && ncol>=0 && ncol<m && grid[nrow][ncol]=='1' && !vis[nrow][ncol]){
  25.                         vis[nrow][ncol]=1;
  26.                         q.push({nrow,ncol});
  27.                     }
  28.                 }
  29.             }
  30.         }
  31.     }
  32.    
  33.     int numIslands(vector<vector<char>>& grid) {
  34.         int n = grid.size();
  35.         int m = grid[0].size(), cnt=0;
  36.         vector<vector<int>> vis(n, vector<int>(m,0));
  37.         for(int row=0;row<n;row++){
  38.             for(int col=0;col<m;col++){
  39.                 if(!vis[row][col] && grid[row][col]=='1'){
  40.                     bfs(row,col,vis,grid);
  41.                     cnt++;
  42.                 }
  43.             }
  44.         }
  45.         return cnt;
  46.     }
  47. };
Tags: C++
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement