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 |
|
|
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 |