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;
}