D. Three-dimensional Turtle Super Computer

题目连接:

http://www.codeforces.com/contest/638/problem/D

Description

A super computer has been built in the Turtle Academy of Sciences. The computer consists of n·m·k CPUs. The architecture was the paralellepiped of size n × m × k, split into 1 × 1 × 1 cells, each cell contains exactly one CPU. Thus, each CPU can be simultaneously identified as a group of three numbers from the layer number from 1 to n, the line number from 1 to m and the column number from 1 to k.

In the process of the Super Computer's work the CPUs can send each other messages by the famous turtle scheme: CPU (x, y, z) can send messages to CPUs (x + 1, y, z), (x, y + 1, z) and (x, y, z + 1) (of course, if they exist), there is no feedback, that is, CPUs (x + 1, y, z), (x, y + 1, z) and (x, y, z + 1) cannot send messages to CPU (x, y, z).

Over time some CPUs broke down and stopped working. Such CPUs cannot send messages, receive messages or serve as intermediates in transmitting messages. We will say that CPU (a, b, c) controls CPU (d, e, f) , if there is a chain of CPUs (xi, yi, zi), such that (x1 = a, y1 = b, z1 = c), (xp = d, yp = e, zp = f) (here and below p is the length of the chain) and the CPU in the chain with number i (i < p) can send messages to CPU i + 1.

Turtles are quite concerned about the denial-proofness of the system of communication between the remaining CPUs. For that they want to know the number of critical CPUs. A CPU (x, y, z) is critical, if turning it off will disrupt some control, that is, if there are two distinctive from (x, y, z) CPUs: (a, b, c) and (d, e, f), such that (a, b, c) controls (d, e, f) before (x, y, z) is turned off and stopped controlling it after the turning off.

Input

The first line contains three integers n, m and k (1 ≤ n, m, k ≤ 100) — the dimensions of the Super Computer.

Then n blocks follow, describing the current state of the processes. The blocks correspond to the layers of the Super Computer in the order from 1 to n. Each block consists of m lines, k characters in each — the description of a layer in the format of an m × k table. Thus, the state of the CPU (x, y, z) is corresponded to the z-th character of the y-th line of the block number x. Character "1" corresponds to a working CPU and character "0" corresponds to a malfunctioning one. The blocks are separated by exactly one empty line.

Output

Print a single integer — the number of critical CPUs, that is, such that turning only this CPU off will disrupt some control.

Sample Input

2 2 3

000

000

111

111

Sample Output

2

Hint

题意

有一个三维空间,从(x,y,z)的信号可以传输到(x+1,y,z),(x,y+1,z),(x,y,z+1)

现在有一些是坏的,就是不能用的

然后问你里面有多少个关键点。

关键点就是,如果这个坏了,会改变原来的传输信号的过程。

假设原来(x,y,z)能够传输到(x1,y1,z1),但是由于坏了(x2,y2,z2),导致不能传输了,就说(x2,y2,z2)是关键的。

题解:

直接forforfor瞎判断就好了……

只用判断每一个好的周围的那些路线就好了

代码

#include<bits/stdc++.h>
using namespace std;
const int maxn = 120;
int mp[maxn][maxn][maxn]; int main()
{
int n,m,k;
scanf("%d%d%d",&n,&m,&k);
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
string s;cin>>s;
for(int t=0;t<s.size();t++)
{
if(s[t]=='1')mp[i][j][t+1]=1;
else mp[i][j][t+1]=0;
}
}
} int ans = 0;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
for(int t=1;t<=k;t++)
{
if(mp[i][j][t])
{
if(mp[i-1][j][t]&&mp[i+1][j][t])ans++;
else if(mp[i][j-1][t]&&mp[i][j+1][t])ans++;
else if(mp[i][j][t-1]&&mp[i][j][t+1])ans++;
else if(mp[i-1][j][t]&&mp[i][j+1][t]&&(!mp[i-1][j+1][t]))ans++;
else if(mp[i-1][j][t]&&mp[i][j][t+1]&&(!mp[i-1][j][t+1]))ans++;
else if(mp[i][j-1][t]&&mp[i+1][j][t]&&(!mp[i+1][j-1][t]))ans++;
else if(mp[i][j-1][t]&&mp[i][j][t+1]&&(!mp[i][j-1][t+1]))ans++;
else if(mp[i][j][t-1]&&mp[i+1][j][t]&&(!mp[i+1][j][t-1]))ans++;
else if(mp[i][j][t-1]&&mp[i][j+1][t]&&(!mp[i][j+1][t-1]))ans++;
}
}
}
}
cout<<ans<<endl;
}

最新文章

  1. Selenium WebDriver 之 PageObjects 模式 by Example
  2. Javascript模块化编程笔记
  3. Machine Learning in Action -- 树回归
  4. pg_dump 备份与恢复的简单操作
  5. UI进阶 FMDB
  6. java 删除字符串中的特定字符
  7. IAR FOR ARM 7.2.2破解方法
  8. Android TextView 字符串展示不同大小文字
  9. 百度前端面试题-类似slack的在线聊天室
  10. BZOJ 2141: 排队 [CDQ分治]
  11. python_crawler,批量下载文件
  12. 两种实现方式mycat多租户,枚举分片,注解拦截
  13. Git源代码管理
  14. windows 安装memchched和memcache教程
  15. linux 磁盘IO测试工具:FIO (同时简要介绍dd工具测试)
  16. Lesson 22 A glass envelope
  17. Java8学习笔记(四)--接口增强
  18. [No0000187]可能是把Java内存区域讲的最清楚的一篇文章
  19. JavaScript函数和内置对象
  20. rsync 故障排查整理

热门文章

  1. 用户空间与内核空间数据交换的方式(9)------netlink【转】
  2. 大数据系列之Kafka安装
  3. FPM定制RPM包
  4. Selenium_Page Object设计模式
  5. BestCoder #88(1001 1002)
  6. 双系统卸载linux和装双系统的方法
  7. codeforce 1A Theatre Square
  8. pip/conda国内镜像--安装包提速
  9. bzoj 1880 最短路径图
  10. AM335x开发板与PC机虚拟机建立tftp文件传输