U282065 连连看

题目背景

原创

题目描述

本题要求模拟连连看游戏的消去操作 给定一个 $n \times m$ 的初始棋盘,棋盘里有编号为 $1 \sim k$ 的方块,保证每个编号成对出现 你需要对此棋盘进行一系列的消去操作,直至所有方块全部消去或无解(当前棋盘不存在可以消去的方块对)即可结束 如果同时有多个可以消去的方块对,你应当首先消去坐标更小的: 1. 棋盘坐标以左上角为原点,$x$ 方向向下,$y$ 方向向右。样例 1 中两个编号为 $1$ 的方块坐标(从左至右)分别为 $(1, 4),~(5, 4)$ 1. 坐标大小的定义为:对于两个坐标 $A(x1, y1),~B(x2, y2)$,先比较 $x_1, x_2$,如果相等,再比较 $y_1, y_2$。如 $(1, 3) \lt (2, 2)$,$(1, 2) \lt (1, 3)$ 1. 如果有两对可以消去的方块对 $(A_1, A_2),~(B_1, B_2)$,先比较 $\min(A_1, A_2)$ 和 $\min(B_1, B_2)$,如果相等,再比较 $\max(A_1, A_2)$ 和 $\max(B_1, B_2)$ 两个方块可以相互消去当且仅当: 1. 两个方块编号相同; 1. 两个方块可通过一条**棋盘内**的路径相连。该路径包含的线段数量不超过三条,且路径中无其他方块。

输入格式

第一行给出两个正整数 $n, m~(2 \le n, m \le 200)$ 接下来 $n$ 行,每行 $m$ 个整数,表示初始棋盘。数值为 $0$ 表示该位置为空,大于 $0$ 表示对应的方块编号(编号值 $\le 10000$)

输出格式

按消去的先后顺序输出所有可以消去的方块对的坐标。假设 $(A_1, A_2)$ 可消去,先输出其中较小的坐标,再输出其中较大的坐标。每行四个正整数,用空格隔开 游戏结束时,输出一行反馈: 1. 若所有方块均已消去,输出 `finish`; 1. 若还有方块未消去但此时已无解,输出 `no solution`。