Advertisement

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;
    }

全部评论 (0)

还没有任何评论哟~