在输了一晚上的麻将之后,小 和小
卸掉了手机上的所有牌类游戏。不过这怎么可能阻挡得了他们上课颓废的决心呢?现在他们的目光盯在了棋类游戏上,但他们两个 除了天天下飞行器以外,几乎所有棋类游戏都只懂个大概规则。
“既然我们都会玩但只能玩一点点,不如我们自己搞个缝合怪出来吧!”
游戏在一张长 行宽
列的网格形棋盘上进行,棋子落在网格的交叉点上。我们不妨记左上角的交叉点的坐标为
,右下角的交叉点坐标为
。
棋子分为黑白两色,对局双方各执一方棋子。
每个棋子除了颜色以外还有等级,不妨设 为棋子
的颜色,
为棋子i的等级。另外,棋盘上的网格线共有
种状态,对于第
条网格线,设其状态为
。
• 对于任意 ,坐标
和
之间必须有网格线直接相连,也就是说走子必须沿着网格线走;
• 对于任意 ,必须有
,也就是说走子过程中不能经过重复位置,特别地
,也就是说不能原地不动(或走回原地)。
• 对于任意 ,坐标
上必须没有棋子,也就是说走子时不能越过已有的棋子。
网格线的状态含义如下所述:
• 如果 ,代表此路不通,走子时不能经过这条网格线。
• 如果 ,代表这条网格线是一条“普通道路”,每次走子时棋子最多只能经过 $1$ 条普通道路。
• 如果 ,代表这条网格线是一条“直行道路”,每次走子时棋子可以经过任意条直行道路,但只能一直沿横向或一直沿纵向走,不能转弯。如沿直行道路从
经过
走到
是可以的,但是从
经过
走到
不行。
• 如果 ,代表这条网格线是一条“互通道路”,每次走子时棋子可以经过任意条互通道路,且中途可任意转弯。
同时规定在一次走子过程中,棋子经过的网格线的状态必须全部相同,比如从 经过直行道路走到
再经过互通道路走到
是不允许的。
可怜的小 发现他的计算力不足以算出这个问题,只好向你求助。
第一行:一个正整数
表示数据组数。对于每组数据:
第一行:
个正整数
,分别表示棋盘的行数、列数和游戏的轮数。
接下来
行,每行为一个长
的字符串,每个字符为
中的一个, 第i行第j个字符表示交叉点
连向交叉点
的网格线状态。
接下来
行,每行为一个长
的字符串,每个字符为
中的一个, 第i行第j个字符表示交叉点
连向交叉点
的网格线状态。
接下来
行,每行
个非负整数
,表示在第
轮有一枚颜色为
, 等级为
的棋子放在了交叉点
上。其中
表示黑子,
表示白子。保证之前交叉点
上没有棋子。
对于每组数据输出
行,每行一个非负整数,表示第
枚棋子放置后能走到的交叉点数量。
对于 100% 的数据,
。
注:由于本题输入输出规模较大,建议使用较为快速的输入输出方式。