#CF1965E. 相连的立方体
相连的立方体
E. 连通立方体
单点时限:4 秒 内存限制:256 MB
现有 个单位立方体,位于坐标 到 的位置。每个立方体都属于 种颜色之一。
你需要添加额外的立方体(可放置在任意整数坐标处),使得每一种颜色的所有立方体构成连通块。 连通的定义:两个立方体共享一个面,则视为连通。
换句话说:对于同一种颜色 的任意两个立方体,都可以通过仅移动同色、面相邻的立方体,从一个到达另一个。
初始立方体都放置在房间的角落位置。 平面 、、 上完全填满了无色立方体,禁止你在这些平面或任意负坐标处放置额外立方体。
请你给出一个最多使用 个额外立方体的方案;如果无解,输出 。 题目保证:若存在解,则一定存在满足立方体数量限制的合法方案。
输入格式
第一行输入三个整数 () 分别表示初始立方体的行数、列数,以及颜色总数。
接下来 行,每行包含 个整数: 第 行的第 个数为 (),表示坐标 处立方体的颜色。 保证颜色 到 每种颜色至少出现一次。
输出格式
如果无解,输出一个整数 。
否则: 第一行输出一个整数 (),表示额外添加的立方体数量。 接下来 行,每行输出四个整数 (,),表示在坐标 处添加一个颜色为 的立方体。
要求:
- 输出中任意两个立方体坐标不重复;
- 输出的坐标不能与初始立方体的坐标重合;
- 任意合法方案均可输出。
样例输入 1
3 4 3
3 2 3 1
1 1 1 1
1 3 3 2
样例输出 1
13
1 1 2 3
1 3 2 3
2 1 2 3
2 2 2 3
2 3 2 3
3 3 2 3
1 2 2 2
1 2 3 2
1 3 3 2
1 4 3 2
2 4 3 2
3 4 3 2
3 4 2 2
样例输入 2
2 2 2
2 1
1 2
样例输出 2
9
1 3 1 1
2 3 1 1
3 1 1 1
3 2 1 1
3 3 1 1
1 1 2 2
1 2 2 2
2 1 2 2
2 2 2 2
样例说明
第一个样例的配图中:红色=1,蓝色=2,绿色=3。