void setZeroes(vector<vector<int> > &matrix) {
// Note: The Solution object is instantiated only once and is reused by each test case.
if(matrix.empty())
return;
int m = matrix.size();
int n = matrix[0].size();
bool first_row,first_col;
first_row = first_col = false;
int i,j;
for(j=0;j<n;j++)
{
if(matrix[0][j]==0)
{
first_row = true;
break;
}
}
for(i=0;i<m;i++)
{
if(matrix[i][0]==0)
{
first_col = true;
break;
}
}
for(i=1;i<m;i++)
{
for(j=1;j<n;j++)
{
if(matrix[i][j]==0)
matrix[i][0] = matrix[0][j] = 0;
}
}
for(j=1;j<n;j++)
{
if(matrix[0][j]==0)
{
for(i=1;i<m;i++)
matrix[i][j] = 0;
}
}
for(i=1;i<m;i++)
{
if(matrix[i][0]==0)
{
for(j=1;j<n;j++)
matrix[i][j] = 0;
}
}
if(first_row)
{
for(j=0;j<n;j++)
matrix[0][j] = 0;
}
if(first_col)
{
for(i=0;i<m;i++)
matrix[i][0] = 0;
}
}