下棋
题号:NC316899
时间限制:C/C++/Rust/Pascal 4秒,其他语言8秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

\hspace{15pt}给定一个 n \times m 的棋盘,每个格子的状态属于集合 \{0, 1, 2\}
\hspace{23pt}\bullet 0 表示空格;
\hspace{23pt}\bullet 1 表示黑棋;
\hspace{23pt}\bullet 2 表示白棋。
\hspace{15pt}我们只考虑上下左右四个方向的相邻关系,即四联通。
\hspace{15pt}定义当前局面的得分规则如下:
\hspace{15pt}对于某一种棋子颜色 c \in \{1, 2\},记另一种棋子颜色为 3-c。考虑所有状态不等于 c 的格子,即所有值属于 \{0, 3-c\} 的格子。在这些格子上按照四联通性质划分为若干个极大连通块。
\hspace{15pt}若某个这样的连通块中,不存在任何一个格子位于棋盘边界,即第一行、最后一行、第一列或最后一列,则称该连通块为一个被颜色 c 完全围住的区域。
\hspace{15pt}对于每个这样的区域,其中所有状态为 3-c 的格子上的棋子都被视为死亡棋子;这些棋子会被颜色 c 提走,颜色 c 获得的分数等于这些被提走棋子的数量。请注意,上述提子过程仅用于计算当前局面的得分,判定结束后棋盘状态保持不变,即死亡棋子不会真的被移除或变成空格。
\hspace{15pt}具体而言:
\hspace{23pt}\bullet 黑方得分等于所有被黑棋(颜色 1)完全围住的区域中,白棋(颜色 2)的总数;
\hspace{23pt}\bullet 白方得分等于所有被白棋(颜色 2)完全围住的区域中,黑棋(颜色 1)的总数。
\hspace{15pt}所有死亡棋子均按照当前局面同时判定、同时提走。也就是说,黑白双方的死亡棋子集合都基于同一个原始局面计算;提子后不再继续进行新的连锁判定。
\hspace{15pt}若黑方得分大于白方得分,则黑方获胜;若白方得分大于黑方得分,则白方获胜;否则为平局。
\hspace{15pt}现在有 q 次作弊操作。每次操作会将某个位置的状态修改为另一种状态。对于初始棋盘,以及每次操作后的棋盘,你都需要判断当前是黑方获胜、白方获胜还是平局。

输入描述:

\hspace{15pt}第一行包含三个整数 n, m, q\left(1 \le n, m \le 10^3,\ 1 \le q \le 10^5\right),分别表示棋盘的行数、列数以及作弊操作次数。
\hspace{15pt}接下来 n 行,每行一个长度为 m 的字符串,仅由字符 012 组成,表示初始棋盘状态。
\hspace{15pt}接下来 q 行,每行包含三个整数 x, y, c\left(1 \le x \le n,\ 1 \le y \le m,\ 0 \le c \le 2\right),表示一次作弊操作:将位置 \left(x, y\right) 的状态修改为字符 c

输出描述:

\hspace{15pt}在第一行输出初始棋盘的结果。
\hspace{15pt}之后的 q 行,第 i 行输出第 i 次操作后的结果。
\hspace{15pt}对于每种结果,输出以下三种字符串之一:
\hspace{23pt}\bullet \texttt{Black}:表示黑方获胜;
\hspace{23pt}\bullet \texttt{White}:表示白方获胜;
\hspace{23pt}\bullet \texttt{Draw}:表示平局。
示例1

输入

复制
3 3 2
111
121
111
2 2 0
2 2 2

输出

复制
Black
Draw
Black

说明

\hspace{15pt}对于样例初始局面,中心的白棋所在连通块在只保留非黑棋格子后不与棋盘边界连通,因此它位于一个被黑棋完全围住的区域中,被黑方提走。故黑方得 1 分,白方得 0 分,结果为 \texttt{Black}
\hspace{15pt}第一次操作后,中心位置变为空格,双方都无法提走对方棋子,因此结果为 \texttt{Draw}
\hspace{15pt}第二次操作后,局面恢复,结果再次为 \texttt{Black}
示例2

输入

复制
12 12 10
000000000000
011111000000
012021000000
010001000000
012021000000
011111000000
000000222220
000000210120
000000200020
000000210120
000000222220
000000000000
4 4 2
9 9 1
2 4 0
2 4 1
7 9 0
7 9 2
3 3 0
8 8 0
4 4 0
9 9 0

输出

复制
Draw
Black
Draw
White
Draw
Black
Draw
White
Draw
White
Draw