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 |
不知道为什么WA,哪位帮忙看下??给点数据也行……#include<stdio.h> #include<string.h> #include<queue> using namespace std; char space[35][35][35]; int dir[6][3]={{-1,0,0},{1,0,0},{0,-1,0},{0,1,0},{0,0,-1},{0,0,1}}; struct T { int level; int row; int col; }; queue<T> q; T ori,des; bool flag; int Min; int l,r,c; int bfs(); bool check(int ,int ,int); int main() { int i,j,k,m,n; int level,row,col; while(scanf("%d%d%d",&l,&r,&c)!=EOF&&(level+row+col)) { for(i=1;i<=l;i++) { for(j=1;j<=r;j++) { getchar(); for(k=1;k<=c;k++) { scanf("%c",&space[i][j][k]); if(space[i][j][k]=='S') { ori.level=i; ori.row=j; ori.col=k; } if(space[i][j][k]=='E') { des.level=i; des.row=j; des.col=k; } } } getchar(); } while(!q.empty()) q.pop(); q.push(ori); space[ori.level][ori.row][ori.col]='#'; flag=false; Min=0; Min=bfs(); if(flag==false) printf("Trapped!\n"); else printf("Escaped in %d minute(s).\n",Min); } return 0; } bool check(int level,int row,int col) { if(level>0&&level<=l&&row>0&&row<=r&&col>0&&col<=c&&space[level][row][col]!='#') return true; return false; } int bfs() { int i,j,k,m,n; T cur,next; while(!q.empty()) { k=q.size(); while(k--) { cur=q.front(); q.pop(); for(i=0;i<6;i++) { next.level=cur.level+dir[i][0]; next.row=cur.row+dir[i][1]; next.col=cur.col+dir[i][2]; if(check(next.level,next.row,next.col)) { if(next.level==des.level&&next.row==des.row&&next.col==des.col) { flag=true; Min++; return Min; } space[next.level][next.row][next.col]='#'; q.push(next); } } } Min++; } } Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator