Submission #57577620


Source Code Expand

#include <bits/stdc++.h>
#include <atcoder/maxflow>
using namespace std;

typedef long long ll;
#define rep(i,a,n) for (ll i=a;i<(ll)(n);i++)
#define per(i,a,n) for (ll i=n;i-->(ll)(a);)

ll read(){ll r;scanf("%lld",&r);return r;}

int main() {
    using namespace std;
    int N=read();

    atcoder::mf_graph<int> G(1 + 4 * N * N + 1);
    const int S = 0, T = 1 + 4 * N * N;
    // v \in [1,4], A[i][j] > v
    const auto _{[N](int i, int j, int v){ return (i * N + j) * 4 + v; }};

    constexpr int inf = 2 * 20 * 19 * 16 + 1; // Let inf a value greater than maximum possible cos

    // Aij > v+1 则 Aij > v
    rep(i,0,N) rep(j,0,N) rep(v,1,4) G.add_edge(_(i, j, v + 1), _(i, j, v), inf);

    // j 和 j+1相邻
    rep(i,0,N) rep(j,0,N-1) rep(v,1,5) {
      G.add_edge(_(i, j    , v), _(i, j + 1, v), 1); // v=v
      G.add_edge(_(i, j + 1, v), _(i, j    , v), 1);
      rep(u,1,v) { // v > u
        G.add_edge(_(i, j    , v), _(i, j + 1, u), 2);
        G.add_edge(_(i, j + 1, v), _(i, j    , u), 2);
      }
    }

    // i和i+1相邻
    rep(i,0,N-1) rep(j,0,N) rep(v,1,5) {
      G.add_edge(_(i    , j, v), _(i + 1, j, v), 1); // v=v
      G.add_edge(_(i + 1, j, v), _(i    , j, v), 1);
      rep(u,1,v){ // v > u
        G.add_edge(_(i    , j, v), _(i + 1, j, u), 2);
        G.add_edge(_(i + 1, j, v), _(i    , j, u), 2);
      }
    }

    // 默认非零的点增加值限制
    rep(i,0,N) rep(j,0,N){
      int A=read();
      if(A == 0) continue;
      if(A < 5) G.add_edge(_(i, j, A), T             , inf); // 保证 不满足 > A
      if(A > 1) G.add_edge(S         , _(i, j, A - 1), inf); // 保证 满足 > A-1 也就是>=A
    }

    // 最大流=最小割
    G.flow(S, T);
    // https://github.com/atcoder/ac-library/blob/master/atcoder/maxflow.hpp
    // min_cut 实现原理是dfs+有剩余容量可达性, 判断是否和S可达, 返回的是 [点]=是否可达
    const auto& cut{G.min_cut(S)};

    rep(i,0,N) {
      rep(j,0,N){
        int B{1};
        rep(v,1,5) B += cut[_(i, j, v)];
        printf("%d ",B);
      }
      printf("\n");
    }
    return 0;
}

Submission Info

Submission Time
Task G - Grid Coloring 2
User cromarmot
Language C++ 20 (gcc 12.2)
Score 600
Code Size 2103 Byte
Status AC
Exec Time 3 ms
Memory 4616 KiB

Compile Error

Main.cpp: In function ‘ll read()’:
Main.cpp:9:21: warning: ignoring return value of ‘int scanf(const char*, ...)’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
    9 | ll read(){ll r;scanf("%lld",&r);return r;}
      |                ~~~~~^~~~~~~~~~~

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 600 / 600
Status
AC × 3
AC × 43
Set Name Test Cases
Sample 00_sample_00.txt, 00_sample_01.txt, 00_sample_02.txt
All 00_sample_00.txt, 00_sample_01.txt, 00_sample_02.txt, 01_random_03.txt, 01_random_04.txt, 01_random_05.txt, 01_random_06.txt, 01_random_07.txt, 01_random_08.txt, 01_random_09.txt, 01_random_10.txt, 01_random_11.txt, 01_random_12.txt, 01_random_13.txt, 01_random_14.txt, 01_random_15.txt, 01_random_16.txt, 01_random_17.txt, 01_random_18.txt, 01_random_19.txt, 01_random_20.txt, 01_random_21.txt, 01_random_22.txt, 01_random_23.txt, 01_random_24.txt, 01_random_25.txt, 01_random_26.txt, 01_random_27.txt, 01_random_28.txt, 01_random_29.txt, 01_random_30.txt, 01_random_31.txt, 01_random_32.txt, 01_random_33.txt, 01_random_34.txt, 01_random_35.txt, 01_random_36.txt, 01_random_37.txt, 01_random_38.txt, 01_random_39.txt, 01_random_40.txt, 01_random_41.txt, 01_random_42.txt
Case Name Status Exec Time Memory
00_sample_00.txt AC 1 ms 3712 KiB
00_sample_01.txt AC 1 ms 3712 KiB
00_sample_02.txt AC 1 ms 4124 KiB
01_random_03.txt AC 2 ms 4528 KiB
01_random_04.txt AC 1 ms 3816 KiB
01_random_05.txt AC 3 ms 4384 KiB
01_random_06.txt AC 2 ms 4088 KiB
01_random_07.txt AC 3 ms 4388 KiB
01_random_08.txt AC 1 ms 3792 KiB
01_random_09.txt AC 3 ms 4480 KiB
01_random_10.txt AC 1 ms 3872 KiB
01_random_11.txt AC 3 ms 4408 KiB
01_random_12.txt AC 1 ms 3692 KiB
01_random_13.txt AC 3 ms 4408 KiB
01_random_14.txt AC 1 ms 3728 KiB
01_random_15.txt AC 3 ms 4396 KiB
01_random_16.txt AC 3 ms 4292 KiB
01_random_17.txt AC 3 ms 4616 KiB
01_random_18.txt AC 1 ms 3804 KiB
01_random_19.txt AC 3 ms 4396 KiB
01_random_20.txt AC 1 ms 3740 KiB
01_random_21.txt AC 3 ms 4360 KiB
01_random_22.txt AC 2 ms 4176 KiB
01_random_23.txt AC 3 ms 4476 KiB
01_random_24.txt AC 1 ms 3800 KiB
01_random_25.txt AC 2 ms 4476 KiB
01_random_26.txt AC 1 ms 4000 KiB
01_random_27.txt AC 3 ms 4612 KiB
01_random_28.txt AC 2 ms 4016 KiB
01_random_29.txt AC 3 ms 4420 KiB
01_random_30.txt AC 2 ms 4168 KiB
01_random_31.txt AC 2 ms 4568 KiB
01_random_32.txt AC 1 ms 4008 KiB
01_random_33.txt AC 2 ms 4480 KiB
01_random_34.txt AC 2 ms 4384 KiB
01_random_35.txt AC 2 ms 4480 KiB
01_random_36.txt AC 2 ms 4436 KiB
01_random_37.txt AC 2 ms 4604 KiB
01_random_38.txt AC 2 ms 4280 KiB
01_random_39.txt AC 2 ms 4352 KiB
01_random_40.txt AC 2 ms 4472 KiB
01_random_41.txt AC 1 ms 3780 KiB
01_random_42.txt AC 1 ms 3708 KiB