| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
久久不能AC,求大牛指点哪里错了#include <iostream>
#include <queue>
using namespace std;
typedef struct{
int v,k;
char c;
}vnode;
vnode node[60000];
int vmax,first,last,l,r,c;
int dx[]={1,-1,0,0,0,0};
int dy[]={0,0,0,0,-1,1};
int dz[]={0,0,-1,1,0,0};
void bfs(){
int xt,yt,zt,temp,z,x,y,vtemp;
queue <int>q;
q.push(first);
while(!q.empty()){
vtemp=q.front();
q.pop();
z=(node[vtemp].v-1)/(r*c);
x=((node[vtemp].v-1)%(r*c))/(r+1);
y=((node[vtemp].v-1)%(r*c))%c;
for(int i=0;i<6;i++){
zt=z+dz[i];
xt=x+dx[i];
yt=y+dy[i];
temp=c*r*zt+xt*c+yt+1;
if(zt>=0 && zt<l && xt>=0 && xt<r && yt>=0 && yt<c && node[temp].c!='#') {
node[temp].k=node[vtemp].k+1;
q.push(temp);
node[temp].c='#';
}
if(temp==last) return;
}
}
}
int main(){
int i,j,k;
char ch[100];
while(scanf("%d%d%d",&l,&r,&c)){
if(l==0 && r==0 && c==0) break;
vmax=0;
for(i=0;i<l;i++){
for(j=0;j<r;j++){
scanf("%s",&ch);
for(k=0;k<c;k++){
node[++vmax].v=vmax;
node[vmax].c=ch[k];
node[vmax].k=0;
if(ch[k]=='S') first=vmax;
else if(ch[k]=='E') last=vmax;
}
}
}
bfs();
if(node[last].k==0) printf("Trapped!\n");
else printf("Escaped in %d minute(s).\n",node[last].k);
}
return 0;
}
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator