#P14939. [uoi2019]水管系统

    ID: 14155 传统题 2000ms 512MiB 尝试: 1 已通过: 1 难度: 6 上传者: 标签>CF1900并查集构造图论2-SAT强连通分量

[uoi2019]水管系统

题目描述

哥萨克·乌斯想成为波托科兰迪亚的总统。按照惯例,为了让善良的公民变得更加善良,也为了让自己在人民中更受欢迎,他需要为大家做一件好事。于是,他决定修理这个国家的水管系统。

水管系统位于地下。为了方便描述,它被划分成相同大小的正方形片段,整体可以看作一个 n×mn\times m 的网格。网格中的行从上到下编号为 11nn,列从左到右编号为 11mm

每个片段可能为空,用数字 00 表示;也可能包含下图所示的 66 种水管之一:

如果对于每一根水管,它的每一个端口都恰好与另一根水管的一个端口相连,则称这个水管系统是闭合的

最近你被任命为哥萨克·乌斯的水管事务副手,因此你现在可以把任意一根水管旋转 9090^\circ 的倍数角度。你的任务是:通过旋转若干水管,使整个水管系统变成闭合的;或者判断这是不可能的。

输入格式

第一行包含三个整数 n,m,gn,m,g1n,m4001\le n,m\le 4000g80\le g\le 8),分别表示网格的长、宽以及测试组编号。

接下来 nn 行,每行包含 mm 个整数 ai,1,ai,2,,ai,ma_{i,1},a_{i,2},\ldots,a_{i,m}0ai,j60\le a_{i,j}\le 6),表示坐标为 (i,j)(i,j) 的格子中的水管类型。

输出格式

如果无法通过旋转水管形成闭合系统,输出:

NO

否则,先输出:

YES

然后输出 nn 行,每行 mm 个整数,表示通过旋转后得到的闭合水管系统。输出格式仍使用题目开头图中所示的编号方式。

样例 1

5 5 0
0 0 0 0 0
0 3 1 2 4
0 2 0 0 1
0 1 0 0 1
0 6 2 2 5
YES
0 0 0 0 0
0 5 1 1 6
0 2 0 0 2
0 2 0 0 2
0 4 1 1 3

样例 2

3 2 0
0 0
1 2
3 0
NO

样例 3

8 8 0
0 4 2 1 2 2 3 0
0 2 5 4 0 0 1 0
0 1 4 5 0 0 1 0
0 1 0 0 3 2 5 0
0 2 5 3 4 2 1 5
0 1 2 5 5 0 0 1
0 2 5 2 5 0 0 1
0 4 2 1 2 2 2 5
YES
0 5 1 1 1 1 6 0
0 2 5 6 0 0 2 0
0 2 4 3 0 0 2 0
0 2 0 0 5 1 3 0
0 2 5 6 4 1 1 6
0 2 2 4 6 0 0 2
0 2 4 1 3 0 0 2
0 4 1 1 1 1 1 3

样例解释

原题面给出的样例解释是一张总图,图中把三个测试样例的初始状态与闭合后的状态放在了一起:

注意:若存在多种合法闭合方案,输出任意一种均可。

计分方式

  1. 77 分:1n,m31\le n,m\le 3
  2. 99 分:1n,m4001\le n,m\le 400,至多有 44 根弯管;
  3. 1212 分:1n,m4001\le n,m\le 400,至多有 88 根弯管;
  4. 1313 分:1n4001\le n\le 400m=2m=2
  5. 1313 分:1n,m4001\le n,m\le 400,若存在解,则至少存在一个解使得每个闭合回路都由 44 根弯管和任意数量的直管组成;
  6. 1414 分:1n4001\le n\le 400m=4m=4
  7. 1515 分:1n,m501\le n,m\le 50
  8. 1717 分:无额外限制。