普及一机械胖子MLE

#include<bits/stdc++.h>
using namespace std;

int aa,b,c,m;
int ans=0;
int a[105][105][105];
int vis[105][105][105];
bool check(int x,int y,int z){
  if(x>0&&y>0&&z>0&&x<=aa&&y<=b&&z<=c){
    return true;
  }else{
    return false;
  }
}
void dfs(int x,int y,int z){
  vis[x][y][z]=1;
  if(check(x+1,y,z)&&abs(a[x][y][z]-a[x+1][y][z])<=m){
    
    dfs(x+1,y,z);
  }if(check(x-1,y,z)&&abs(a[x][y][z]-a[x-1][y][z])<=m){
    
    dfs(x-1,y,z);
  }if(check(x,y+1,z)&&abs(a[x][y][z]-a[x][y+1][z])<=m){
    
    dfs(x,y+1,z);
  }if(check(x,y-1,z)&&abs(a[x][y][z]-a[x][y-1][z])<=m){
    
    dfs(x,y-1,z);
  }if(check(x,y,z+1)&&abs(a[x][y][z]-a[x][y][z+1])<=m){
    
    dfs(x,y,z+1);
  }if(check(x,y,z-1)&&abs(a[x][y][z]-a[x][y][z-1])<=m){
    
    dfs(x,y,z-1);
  }
}
int main(){
  memset(vis,0,sizeof(vis));
  cin>>aa>>b>>c>>m;
  for(int i=1;i<=aa;i++){
    for(int j=1;j<=b;j++){
      for(int k=1;k<=c;k++){
        cin>>a[i][j][k];
      }
    }
  }for(int i=1;i<=aa;i++){
    for(int j=1;j<=b;j++){
      for(int k=1;k<=c;k++){
        if(vis[i][j][k]==0){
          dfs(i,j,k);
          ans++;
        }
      }
    }
  }cout<<ans<<endl;
  
}

check写错了是

if(x>0&&y>0&&z>0&&x<=aa&&y<=b&&z<=c&&vis[i][j][k]==0){
    return true;
  }else{
    return false;
  }