Why am I getting TLE in this ? (Number of islands)

// It passes 38/49 TCS

class Solution {
public:

int numIslands(vector<vector<char>>& grid) {
    
    
    int r = grid.size();
    
    if(r ==  0)
        return 0;
    
    
    int c = grid[0].size();
    
    if(c ==  0)
        return 0;
    
    
            
    queue<pair<int , int>> que;
    int start = 0;
    
    
    auto valid = [&](int ii,int jj){
        if(ii<r && ii>=0 && jj<c && jj>=0)
            return true;
        return false;
    };
    
    vector<pair<int,int>> dir{{0,1} ,{1,0} ,{-1,0} ,{0,-1}};
     
    for(int i=0;i<r;i++)
    {
        for(int j=0;j<c;j++)
        {
            if(grid[i][j] == '0')
                continue;
            start++;
            que.push({i,j});
            grid[i][j] = '0';
            
            while(!que.empty()){
                
                pair<int ,int> p = que.front();
                
                int ii, jj;
                ii = p.first;
                jj = p.second;
                
                que.pop();
                
                grid[ii][jj] = '0';
                
                for(int k=0;k<dir.size();k++)
                if(valid(ii+dir[k].first,jj+dir[k].second))
                if((grid[ii+dir[k].first][jj+dir[k].second] == '1'))
                    que.push({ii+dir[k].first , jj+dir[k].second});
            }
            
        }
    }
    
        return start;
}

};

Comments (1)