func_code_string: #include <bits/stdc++.h>   using namespace std;   int n, m, k;   int a[111][111][111];   int color[111][111][111], cc;   char second[111];   void visit(queue<pair<pair<int, int>, int> >* q, int x, int y, int z) {     if (a[x][y][z] == 1 && color[x][y][z] != cc) {       color[x][y][z] = cc;       q->push(make_pair(make_pair(x, y), z));     }   }   void go(int x, int y, int z, int mx, int my, int mz) {     assert(a[x][y][z] == 1);     if (mx > n) mx = n;     if (my > m) my = m;     if (mz > k) mz = k;     ++cc;     queue<pair<pair<int, int>, int> > q;     color[x][y][z] = cc;     q.push(make_pair(make_pair(x, y), z));     while (!q.empty()) {       pair<pair<int, int>, int> fr = q.front();       q.pop();       int x = fr.first.first;       int y = fr.first.second;       int z = fr.second;       if (x + 1 <= mx) visit(&q, x + 1, y, z);       if (y + 1 <= my) visit(&q, x, y + 1, z);       if (z + 1 <= mz) visit(&q, x, y, z + 1);     }   }   bool reachable(int x, int y, int z) {     if (x + 1 < n && a[x + 1][y][z] == 1 && color[x + 1][y][z] != cc) {       return false;     }     if (y + 1 < m && a[x][y + 1][z] == 1 && color[x][y + 1][z] != cc) {       return false;     }     if (z + 1 < k && a[x][y][z + 1] == 1 && color[x][y][z + 1] != cc) {       return false;     }     return true;   }   bool critical(int x, int y, int z) {     if (x > 0 && a[x - 1][y][z] == 1) {       go(x - 1, y, z, x + 1, y + 1, z + 1);       if (!reachable(x, y, z)) {         return true;       }     }     if (y > 0 && a[x][y - 1][z] == 1) {       go(x, y - 1, z, x + 1, y + 1, z + 1);       if (!reachable(x, y, z)) {         return true;       }     }     if (z > 0 && a[x][y][z - 1] == 1) {       go(x, y, z - 1, x + 1, y + 1, z + 1);       if (!reachable(x, y, z)) {         return true;       }     }     return false;   }   int main() {     scanf( %d%d%d , &n, &m, &k);     for (int i = 0; i < n; i++) {       for (int j = 0; j < m; j++) {         scanf( %s , second);         for (int t = 0; t < k; t++) {           a[i][j][t] = (second[t] ==  1 );         }       }     }     int res = 0;     for (int i = 0; i < n; i++) {       for (int j = 0; j < m; j++) {         for (int t = 0; t < k; t++) {           if (a[i][j][t] == 1) {             a[i][j][t] = 0;             res += critical(i, j, t);             a[i][j][t] = 1;           }         }       }     }     printf( %d n , res);     return 0;   }   