社区讨论

这个做法还有机会AC吗?TLE一个点,对闭关

P1162填涂颜色参与者 4已保存回复 5

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
4 条
当前快照
1 份
快照标识符
@mk55bhnb
此快照首次捕获于
2026/01/08 15:48
上个月
此快照最后确认于
2026/01/10 21:40
上个月
查看原帖
CPP
#include <bits/stdc++.h>

using namespace std;

int n;
int dg[4][2] = {{-1 ,0} ,{1 ,0} ,{0 ,-1} ,{0 ,1}};
struct Node{
    int ma;
    bool flag = true;
}a[35][35];

void dfs (int x ,int y) {
    for (int i = 0;i < 4;i++) {
        int dx = x + dg[i][0];
        int dy = y + dg[i][1];
        if (a[dx][dy].ma == 0 && (dx >= 1 && dx <= n && dy >= 1 && dy <= n)) {
            a[dx][dy].ma = 1;
            a[dx][dy].flag = false;
            dfs(dx ,dy);
            a[dx][dy].ma = 0;
        }
    }
}
int main() {
    ios::sync_with_stdio(false);
    cin.tie(0);
    //cin.tie(0)->sync_with_stdio(0);
    cin >> n;
    for (int i = 1;i <= n;i++) {
        for (int j = 1;j <= n;j++) {
            cin >> a[i][j].ma;
            a[i][j].flag = true;
        }
    }
    for (int i = 1;i <= n;i++) {
        for (int j = 1;j <= n;j++) {
            if (a[i][j].ma == 1) {
                a[i][j].flag = false;
            } else if ((i == 1 || i == n || j == 1 || j == n) && a[i][j].ma == 0) {
                a[i][j].flag = false;
                dfs(i ,j);
            }
        }
    }
    for (int i = 1;i <= n;i++) {
        for (int j = 1;j <= n;j++) {
            if (a[i][j].ma == 0 && a[i][j].flag == true) {
                a[i][j].ma = 2;
            }
        }
    }
    for (int i = 1;i <= n;i++) {
        for (int j = 1;j <= n;j++) {
            cout << a[i][j].ma << " ";
        }
        cout << endl;
    }

    return 0;
}

回复

5 条回复,欢迎继续交流。

正在加载回复...