Double Chocolate(或 Double Choco)是一种在网格上进行的谜题。部分格子被涂成白色,其余格子被涂成灰色,某些格子中写有大于或等于 1 的整数。玩家需要根据以下规则将整个网格划分为一个或多个区域:
- 每个区域内必须恰好包含一个上下左右相连的白色格子区域和一个上下左右相连的灰色格子区域,且这两个区域的形状必须相同。通过水平、垂直、对角线翻转或旋转能够重合的形状视为相同形状。
- 每个区域内最多只能包含一个写有整数的格子。如果区域内含有这样的格子,则该区域内每种颜色(白色和灰色)的面积(格子数量)必须等于该整数。
以下是双重巧克力谜题及其正确解答的示例:
以下是错误解答的示例:
- 区域内白色和灰色区域的面积与区域内的数字不符,或者一个区域内含有 2 个或更多的数字。
- 白色区域与灰色区域没有相互连接。
- 在同一个区域内,白色格子之间或灰色格子之间没有相互连接。
- 属于同一区域的格子之间存在不必要的边界。
- 同一区域内的白色区域和灰色区域形状不一致。
给定一个双重巧克力谜题和一份解答,请判断该解答是否正确。
输入格式
第一行包含一个整数 $N$,表示网格的大小。
接下来的部分给出双重巧克力谜题。前 $N$ 行中,每行给出网格中每个格子的颜色,用 1(灰色)或 0(白色)表示。
下一行包含一个整数 $K$,表示谜题中写有数字的格子数量。
接下来的 $K$ 行中,每行包含写有数字的格子的坐标 $r, c$(行号、列号)以及该格子上的整数 $k$。给定的双重巧克力谜题可能有 0 个、1 个或多个正确答案。
再接下来的行给出该谜题的解答。解答以大小为 $(2N+1) \times (2N+1)$ 的 ASCII 艺术形式给出,仅包含将给定谜题划分为区域的信息。该图满足以下条件:
- 奇数行奇数列的字符表示每个正方形格子的顶点,全部为
+。 - 偶数行偶数列的字符表示每个正方形格子的内部,全部为
.。 - 奇数行偶数列的字符表示水平边界线,如果该位置有边界线则为
-,否则为.。第一行和最后一行的偶数列字符全部为-。 - 偶数行奇数列的字符表示垂直边界线,如果该位置有边界线则为
|,否则为.。偶数行的第一列和最后一列字符全部为|。
输出格式
如果给定的解答是该谜题的正确答案,则输出 1,否则输出 0。
样例
输入样例 1
4 0 0 0 1 1 1 1 1 0 1 0 1 0 1 0 0 2 3 2 3 4 1 1 +-+-+-+-+ |.......| +-+-+-+.+ |.|...|.| +.+.+.+.+ |.|...|.| +-+-+.+-+ |...|...| +-+-+-+-+
输出样例 1
1
输入样例 2
4 0 0 0 1 1 1 1 1 0 1 0 1 0 1 0 0 2 3 2 3 4 1 1 +-+-+-+-+ |...|...| +.+.+-+-+ |...|...| +-+-+.+.+ |...|...| +.+.+.+.+ |...|...| +-+-+-+-+
输出样例 2
0
说明
$2 \le N \le 10$,$N$ 是偶数,$1 \le r, c \le N$。