PTA肿瘤诊断

在这里插入图片描述
输入样例:

3 4 5 2
1 1 1 1
1 1 1 1
1 1 1 1
0 0 1 1
0 0 1 1
0 0 1 1
1 0 1 1
0 1 0 0
0 0 0 0
1 0 1 1
0 0 0 0
0 0 0 0
0 0 0 1
0 0 0 1
1 0 0 0

输出样例:

26

代码如下:

#include<cstdio>
#include<iostream>
#include<queue>
#include<algorithm>
#include<cstring>
using namespace std;
int gra[1286][128][60];
int cnt=0;
int m,n,l,t;
struct node{
    
    
	int x,y,z;
};
int fd[6][3]={
    
    
		{
    
    0,0,1},
		{
    
    0,0,-1},
		{
    
    0,1,0},
		{
    
    0,-1,0},
		{
    
    1,0,0},
		{
    
    -1,0,0},
	};
bool check(int x,int y,int z){
    
    
	if(x<0||x>=m||y<0||y>=n||z<0||z>=l||gra[x][y][z]!=1) return false;
	return true;
}
void bfs(int x,int y,int z){
    
    
	queue<node>q;
	gra[x][y][z]=2;
	node p;
	p.x=x;p.y=y;p.z=z;
	q.push(p);
	int wei=1;
	while(!q.empty()){
    
    
		p=q.front();
		q.pop();
		for(int i=0;i<6;++i){
    
    
			if(check(p.x+fd[i][0],p.y+fd[i][1],p.z+fd[i][2])){
    
    
				wei++;
				gra[p.x+fd[i][0]][p.y+fd[i][1]][p.z+fd[i][2]]=2;
				node ppp;
				ppp.x=p.x+fd[i][0];
				ppp.y=p.y+fd[i][1];
				ppp.z=p.z+fd[i][2];
				q.push(ppp);
			}
		}
	}
	if(wei>=t) cnt+=wei;
}
int main(){
    
    
	scanf("%d%d%d%d",&m,&n,&l,&t);
	for(int i=0;i<l;++i){
    
    
		for(int j=0;j<m;++j){
    
    
			for(int k=0;k<n;++k){
    
    
				scanf("%d",&gra[j][k][i]);
			}
		}
	}
	//printf("\n\n");
	for(int i=0;i<l;++i){
    
    
		for(int j=0;j<m;++j){
    
    
			for(int k=0;k<n;++k){
    
    
		//		printf("%d ",gra[j][k][l]);
				if(gra[j][k][i]==1){
    
    
					bfs(j,k,i);
				}
			}
		//	printf("\n");
		}
	}
	/*for(int i=0;i<l;++i){
		for(int j=0;j<m;++j){
			for(int k=0;k<n;++k){
				//cout<<j<<" "<<k<<" "<<i<<" ";
				printf("%d ",gra[j][k][i]);

			}
			printf("\n");
		}
	}*/
	printf("%d",cnt);
	return 0;
}

猜你喜欢

转载自blog.csdn.net/qq_45695839/article/details/108425008
PTA