3 solutions

  • 0
    @ 2025-6-7 22:06:47

    #include <bits/stdc++.h> using namespace std; char g[1010][1010]; int r, c, N, C[1010][1010], s[1010101], d[4][2] = {{1,0},{-1,0},{0,1},{0,-1}}; int dfs(int x, int y) { if (x < 0 || x >= r || y < 0 || y >= c || C[x][y] || g[x][y] == '') return 0; C[x][y] = N; int s = 1; for(int i=0;i<4;i++) s += dfs(x + d[i][0], y + d[i][1]); return s; } int main() { scanf("%d%d", &r, &c); for(int i=0;i<r;i++) scanf(" %s", g[i]); for(int i=0;i<r;i++) for(int j=0;j<c;j++) s[++N] = dfs(i, j); for(int i=0;i<r;i++) { for(int j=0;j<c;j++) if (g[i][j] == '') { std::set::iterator it; set a; for(int k=0;k<4;k++) a.insert(C[i + d[k][0]][j + d[k][1]]); int z = 1; for (it=a.begin(); it!=a.end(); ++it) z += s[*it]; g[i][j] = '0' + (z % 10); } printf("%s\n", g[i]); } }

    Information

    ID
    270
    Time
    1000ms
    Memory
    256MiB
    Difficulty
    8
    Tags
    (None)
    # Submissions
    16
    Accepted
    5
    Uploaded By