class Solution {
public:
void setZeroes(vector<vector<int>>& matrix) {
int row0 = 1, col0 = 1;
int m = matrix.size(), n = m ? matrix[0].size() : 0;
for (int i = 0; i < m; i++)
for (int j = 0; j < n; j++)
if (!matrix[i][j]) {
if (i == 0) row0 = 0;
if (j == 0) col0 = 0;
matrix[i][0] = 0;
matrix[0][j] = 0;
}
for (int i = 1; i < m; i++)
for (int j = 1; j < n; j++)
if (!matrix[i][0] || !matrix[0][j])
matrix[i][j] = 0;
if (!row0)
for (int j = 0; j < n; j++)
matrix[0][j] = 0;
if (!col0)
for (int i = 0; i < m; i++)
matrix[i][0] = 0;
}
};