#include #include #include #include using namespace std; int main() { int r, c; cin >> r >> c; int mat[55][55]; for (int i = 0; i < r; i++) { for (int j = 0; j < c; j++) { cin >> mat[i][j]; } } bool visited[55][55]; for (int i = 0; i < r; i++) { for (int j = 0; j < c; j++) { visited[i][j] = false; } } int min1 = 10000000; queue a; int si; int sj; int roboti = 0; for (int x = 0; x < r * c; x++) { si = -1; sj = -1; min1 = 10000000; for (int i = 0; i < r; i++) { for (int j = 0; j < c; j++) { if (min1 > mat[i][j] && !visited[i][j]) { min1 = min(mat[i][j], min1); si = i; sj = j; } } } int di[4] = {1, -1, 0, 0}; int dj[4] = {0, 0, 1, -1}; if (si != -1) { a.push(si); a.push(sj); roboti++; visited[si][sj] = true; while (!a.empty()) { int ci = a.front(); a.pop(); int cj = a.front(); a.pop(); for (int i = 0; i < 4; i++) { int tmpi = ci + di[i]; int tmpj = cj + dj[i]; if (tmpi >= 0 && tmpj >= 0 && tmpi < r && tmpj < c && !visited[tmpi][tmpj] && mat[tmpi][tmpj] >= mat[ci][cj]) { a.push(tmpi); a.push(tmpj); visited[tmpi][tmpj] = true; } } } } } cout <