六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 260|回复: 0

HDU1253

[复制链接]

升级  48%

6

主题

6

主题

6

主题

童生

Rank: 1

积分
24
 楼主| 发表于 2012-12-30 16:08:36 | 显示全部楼层 |阅读模式
<div id="cnblogs_post_body"><div class="cnblogs_code" >View Code <div id="cnblogs_code_open_10878aa7-9f90-43f4-8f72-3868644a5cca" class="cnblogs_code_hide"> 1 #include<cstdio> 2 #include<cstdlib> 3 #include<cstring> 4 #include<iostream> 5 #include<queue> 6 #include<algorithm> 7 #define N 55 8 int map[N][N][N]; 9 int a,b,c,maxt,ans;10 int fmin(int i,int j){11     return i>j?j:i;12 }13 using namespace std;14 struct point {15     int x,y,z;16     int lev;17 };18 point p,pp;19 queue<point>q;20 int dx[6]={0,-1,0,1,0,0};21 int dy[6]={-1,0,1,0,0,0};22 int dz[6]={0,0,0,0,1,-1};23 24 void bfs(int sz,int sx,int sy){25     int i,j,k,tx,ty,tz;26     p.x=sx;27     p.y=sy;28     p.z=sz;29     p.lev=0;30     while(!q.empty())31         q.pop();32     q.push(p);33     while(!q.empty()){34         p=q.front();35         q.pop();36         if(p.x==b-1&&p.y==c-1&&p.z==a-1){37             ans=fmin(ans,p.lev);38         }39         for(i=0;i<6;i++){40             pp.x=p.x;41             pp.y=p.y;42             pp.z=p.z;43             pp.x+=dx;44             pp.y+=dy;45             pp.z+=dz;46             if(pp.z<0||pp.z>=a||pp.x<0||pp.x>=b||pp.y<0||pp.y>=c||map[pp.z][pp.x][pp.y]==1)47                 continue;48             map[pp.z][pp.x][pp.y]=1;49             pp.lev=p.lev+1;50             q.push(pp);51         }52     }53 }54 55 int main(){56     int t,i,j,k;57     scanf("%d",&t);58     while(t--){59         scanf("%d%d%d%d",&a,&b,&c,&maxt);60         for(i=0;i<a;i++)61             for(j=0;j<b;j++)62                 for(k=0;k<c;k++)63                     scanf("%d",&map[j][k]);64         ans=999999;65         map[0][0][0]=1;//66         bfs(0,0,0);67         if(ans<=maxt)68             printf("%d\n",ans);69         else70             printf("-1\n");71     }72     return 0;73 }
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表