嗯,嗯,嗯,dfs会爆掉.........
那咋了,谁让我一眼dfs
爆就爆吧
以下是错误代码/(ㄒoㄒ)/~~
#include <bits/stdc++.h>
using namespace std;
#define vi vector<int>
#define sz(x) (int)x.size()
//2025.3.24
struct o{
int a[1303][133];
};
vector<o>arr(63);
int n,m,l,t;
int check(int f,int x,int y){
if(f<0||x<0||y<0||f>=l||x>=n||y>=m)return 0;
return 1;
}
int summ=0;
map<int,int>ans;
int idx;
int opf[]={0,0,0,0,-1,1};
int opx[]={0,1,0,-1,0,0};
int opy[]={1,0,-1,0,0,0};
int vis[63][1303][133];
void dfs(int f,int x,int y,int gg){
if(!check(f,x,y))return;
if(vis[f][x][y]==1||arr[f].a[x][y]==0)return;
vis[f][x][y]=1;
if(arr[f].a[x][y]==1){
if(gg==-1){gg=idx+1;idx++;}
ans[gg]++;
}
for(int i=0;i<6;i++){
if(check(f+opf[i],x+opx[i],y+opy[i])){
if(!vis[f+opf[i]][x+opx[i]][y+opy[i]])dfs(f+opf[i],x+opx[i],y+opy[i],gg);
}
}
}
void solve(){
cin>>n>>m>>l>>t;
for(int i=0;i<l;i++){
for(int j=0;j<n;j++){
for(int k=0;k<m;k++){
cin>>arr[i].a[j][k];//读入
}
}
}
for(int i=0;i<l;i++){
for(int j=0;j<n;j++){
for(int k=0;k<m;k++){
dfs(i,j,k,-1);
}
}
}
vector<pair<int,int>>r(ans.begin(),ans.end());
for(int i=0;i<sz(r);i++){
if(r[i].second>=t)summ+=r[i].second;
}
cout<<summ;
}
signed main()
{
solve();
return 0;
}