The Largest Generation (25)(BFS)(PAT甲级)
#include<bits/stdc++.h>
using namespace std;
int n,m,l,t;
int a[1307][137][67];
int vis[1307][137][67];
typedef struct{
int x,y,z;
}node;
int xx[6]={0,0,0,0,1,-1};
int yy[6]={0,0,1,-1,0,0};
int zz[6]={1,-1,0,0,0,0};
node p;
int bfs(int x,int y,int z){
queue<node>q;
vis[x][y][z]=1;
p.x=x;
p.y=y;
p.z=z;
q.push(p);
int sum=0;
while(!q.empty()){
node tmp=q.front();
q.pop();
sum++;
for(int i=0;i<6;++i){
int tx=tmp.x+xx[i];
int ty=tmp.y+yy[i];
int tz=tmp.z+zz[i];
if(tx>0&&tx<=n&&ty>0&&ty<=m&&tz>0&&tz<=l&&a[tx][ty][tz]&&!vis[tx][ty][tz]){
p.x=tx;
p.y=ty;
p.z=tz;
q.push(p);
vis[tx][ty][tz]=1;
}
}
}
if(sum>=t)
return sum;
return 0;
}
int main(){
std::ios::sync_with_stdio(false);
cin>>n>>m>>l>>t;
for(int i=1;i<=l;++i)
for(int j=1;j<=n;++j)
for(int k=1;k<=m;++k)
cin>>a[j][k][i];
int ans=0;
for(int i=1;i<=l;++i)
for(int j=1;j<=n;++j)
for(int k=1;k<=m;++k)
if(a[j][k][i]&&!vis[j][k][i])
ans+=bfs(j,k,i);
cout<<ans;
return 0;
}
最新文章
- booting logo &; booting animation
- ViewBag是如何实现的
- web页面实现指定区域打印功能
- IE6低版本jQuery里的show和hide方法BUG
- hdu 1039 (string process, fgets, scanf, neat utilization of switch clause) 分类: hdoj 2015-06-16 22:15 38人阅读 评论(0) 收藏
- 用vs2010编译和调试多个arx版本的arx项目
- SQL中的连接查询及其优化原则
- Git基本使用命令
- Java实现数组按数值大小排序
- JavaScript数据结构——数组
- js一些方法的扩展
- Java用jdom.jar解析读取XML文件信息
- 使用java实现发送邮件的功能
- 命令行登陆mysql提示&#39;mysql&#39; 不是内部或外部命令
- Cocos2D绘制纹理的一般方法
- Linux split命令详解
- js 内置函数 内置对象
- vmware下ubuntu不能上网 =>; 恢复默认虚拟网络
- JavaScript《一》
- 单独安装VS2012装mono for android
热门文章
- HDU 4714 Tree2cycle:贪心
- C++(九)— 虚函数、纯虚函数、虚析构函数
- PHP+MySQL百万级数据插入的优化
- A N EAR -D UPLICATE D ETECTION A LGORITHM T O F ACILITATE D OCUMENT C LUSTERING——有时间看看里面的相关研究
- PostgreSQL物化视图(materialized view)
- linux命令学习笔记(35):ln 命令
- H264视频编码成MP4文件
- Java 处理批量数据提交
- 百度地图设置div样式宽高为百分比不显示地图
- hdu 5616 Jam&#39;s balance 正反背包+转换