CF638D Three-dimensional Turtle Super Computer
题目描述
在乌龟科学院建造了一台超级计算机。该计算机由 $n·m·k$ 个 CPU 组成。其结构为一个尺寸为 $n×m×k$ 的平行六面体,被切分为 $1×1×1$ 的单元格,每一个单元格正好包含一个 CPU。因此,每个 CPU 可以用三元组来唯一标识:层编号 $1$ 到 $n$,行编号 $1$ 到 $m$ 和列编号 $1$ 到 $k$。
在超级计算机的运作过程中,CPU 可以通过著名的乌龟通信方案互相发送消息:CPU $(x,y,z)$ 可以向 CPU $(x+1,y,z)$、$(x,y+1,z)$ 和 $(x,y,z+1)$ 发送消息(当然,前提是这些 CPU 存在),但不支持反向通信,即 $(x+1,y,z)$、$(x,y+1,z)$ 或 $(x,y,z+1)$ 不能向 $(x,y,z)$ 发送消息。
随着时间推移,一些 CPU 损坏并停止工作。损坏的 CPU 不能发送消息、接收消息,也无法作为中继节点。我们称 CPU $(a,b,c)$ 能“控制” CPU $(d,e,f)$,如果存在一条 CPU 链 $(x_{i},y_{i},z_{i})$,使得 $(x_{1}=a,y_{1}=b,z_{1}=c)$,$(x_{p}=d,y_{p}=e,z_{p}=f)$(这里 $p$ 是链的长度),并且对于链上任意 $i
输入格式
第一行包含三个整数 $n$、$m$ 和 $k$($1 \leq n, m, k \leq 100$)——超级计算机的尺寸。
接下来的 $n$ 个区块,描述当前进程的状态。每个区块对应超级计算机的一层,顺序从第 $1$ 层到第 $n$ 层。每个区块包含 $m$ 行,每行 $k$ 个字符,表示该层的 $m \times k$ 的状态表。对应于 $(x,y,z)$ 的 CPU 状态为第 $x$ 个区块的第 $y$ 行第 $z$ 个字符。字符 “1” 表示工作正常的 CPU,字符 “0” 表示损坏的 CPU。各个区块之间用一行空行隔开。
输出格式
输出一个整数——关键 CPU 的数量,即关闭仅仅这个 CPU 就会破坏某些控制关系的 CPU 数目。
说明/提示
在第一个样例中,整整第一层的 CPU 全部损坏。在第二层,如果 CPU $(2,1,2)$ 被关闭,则会破坏 CPU $(2,1,3)$ 到 CPU $(2,1,1)$ 的控制;若 CPU $(2,2,2)$ 被关闭,则会破坏 CPU $(2,2,1)$ 到 CPU $(2,2,3)$ 的控制。
在第二个样例中,除了各个角落的 CPU 外,其它的都为关键 CPU。
在第三个样例中,没有任何一个 CPU 可以控制其它 CPU,因此答案为 $0$。
由 ChatGPT 5 翻译