#P17443. PM12316三色可染网格

PM12316三色可染网格

题目描述

有一个 H×WH\times W 的矩形网格。每个小格的四条边都已经画成白色;此外,每个小格最终还要恰好画上一条对角线。

所有格点随后要用红、绿、蓝三种颜色之一染色,并满足:任意由白色线段直接连接的两个格点颜色不同。这里白色线段包括小格的四条边以及该小格所选择的对角线。

输入矩阵中,字符含义如下:

  • N:该格已经确定画左上到右下的对角线;
  • Z:该格已经确定画右上到左下的对角线;
  • ?:该格尚未确定,需要选择 NZ

你需要补全所有 ?,使最终图可以用三种颜色合法染色。如果不存在任何合法补全,输出无解;否则输出所有合法补全中字典序最小的一个。比较两个矩阵时,从第一行开始依次比较字符串;字符顺序按通常字典序,因此 N 小于 Z

输入格式

第一行两个整数 H,WH,W

接下来 HH 行,每行一个长度为 WW 的字符串,只包含 NZ?

输出格式

若无解,输出一行整数 0

否则第一行输出整数 HH,接下来输出 HH 行补全后的矩阵。

数据范围

1H,W501\le H,W\le 50

样例 1

1 1
Z
1
Z

样例 2

2 2
??
?N
2
NN
NN