Untitled
unknown
plain_text
a year ago
1.9 kB
4
Indexable
void BFS(int r,int c,vector<vector<int>>&visited,int rows,int cols,vector<vector<char>>& grid) { //dir --> 0,1 1,0 -1,0 0,-1 int i,j; queue<pair<int,int>>q; visited[r][c]=1; q.push(make_pair(r,c)); while(q.size()) { pair<int,int>u=q.front(); cout<<u.first<<" "<<u.second<<"\n"; q.pop(); if(r+1<rows && c<cols && visited[r+1][c]==0 &&grid[r+1][c]=='1') { q.push(make_pair(r+1,c)); visited[r+1][c]=1; } if(r<rows && c+1<cols && visited[r][c+1]==0 &&grid[r][c+1]=='1') { q.push(make_pair(r,c+1)); visited[r][c+1]=1; } if(r-1>=0 && c<cols && visited[r-1][c]==0 &&grid[r-1][c]=='1') { q.push(make_pair(r-1,c)); visited[r-1][c]=1; } if(r<rows && c-1>=0 && visited[r][c-1]==0 &&grid[r][c-1]=='1') { q.push(make_pair(r,c-1)); visited[r][c-1]=1; } } } int numIslands(vector<vector<char>>& grid) { int rows=grid.size(); int cols=grid[0].size(); vector<vector<int>>visited; int i,j,ct=0; for(i=0;i<rows;i++) { vector<int>v; for(j=0;j<cols;j++) { v.push_back(0); } visited.push_back(v); } for(i=0;i<rows;i++) { for(j=0;j<cols;j++) { if(grid[i][j]=='1' and visited[i][j]==0) { BFS(i,j,visited,rows,cols,grid); ct++; } } } return ct; }
Editor is loading...