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