Skip to content

Latest commit

 

History

History
45 lines (34 loc) · 1.12 KB

5.md

File metadata and controls

45 lines (34 loc) · 1.12 KB
 vector<vector<int>> floodFill(vector<vector<int>>& image, int sr, int sc, int color) {

        int n=image.size();
        int m=image[0].size();

        int visited[n][m];

        int drow[]={-1,0,1,0};
        int dcol[]={0,1,0,-1};

        vector<vector<int>> ans = image;
        
        queue<pair<pair<int,int>,int>>q;

        q.push({{sr,sc},image[sr][sc]});
        visited[sr][sc]=color;
        ans[sr][sc]=color;

        while(!q.empty())
        {
            int r=q.front().first.first;
            int c=q.front().first.second;
            int t=q.front().second;
            q.pop();

            for(int i=0;i<4;i++)
            {
                int ro=r+drow[i];
                int co = c+dcol[i];

                if(ro>=0 && ro<n && co>=0 && co<m && image[ro][co]==t && visited[ro][co]!=color)
                {
                     ans[ro][co]=color;
                    visited[ro][co]=color;
                    q.push({{ro,co},image[ro][co]});
                }

            }
        }
        return ans;
    }