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 |
Re:Why always MLE!!!HELP!!!In Reply To:Why always MLE!!!HELP!!! Posted by:remijohn at 2011-09-11 23:49:05 > #include<stdio.h> > #include<queue> > #include<string.h> > using namespace std; > > #define MAXNUM 31 > > struct _pos > { > int x,y,l; > }; > > _pos start,end; > bool _map[MAXNUM][MAXNUM][MAXNUM]; > bool visit[MAXNUM][MAXNUM][MAXNUM]; > int path[MAXNUM][MAXNUM][MAXNUM]; > int l,r,c; > > > > int BFS() > { > queue<_pos> q; > _pos curPos,newPos; > curPos.x = start.x; > curPos.y = start.y; > curPos.l = start.l; > path[curPos.l][curPos.y][curPos.x] = 0; > > q.push(curPos); > int i; > int d[6][3] = {{0,-1,0},{1,0,0},{0,1,0},{-1,0,0},{0,0,-1},{0,0,1}}; > while(!q.empty()) > { > curPos = q.front(); > visit[curPos.l][curPos.y][curPos.x] = true; > q.pop(); > if(curPos.x == end.x && curPos.y == end.y && curPos.l == end.l) > { > return path[curPos.l][curPos.y][curPos.x]; > } > for(i=0;i<6;i++) > { > newPos.x = curPos.x + d[i][0]; > newPos.y = curPos.y + d[i][1]; > newPos.l = curPos.l + d[i][2]; > if((newPos.x<0)||(newPos.x>c-1)||(newPos.y<0)||(newPos.y>r-1)||(newPos.l<0)||(newPos.l>l-1)||!_map[newPos.l][newPos.y][newPos.x]||visit[newPos.l][newPos.y][newPos.x]) > continue; > path[newPos.l][newPos.y][newPos.x] = path[curPos.l][curPos.y][curPos.x] + 1; > q.push(newPos); > } > } > return -1; > } > > int main() > { > while(scanf("%d%d%d",&l,&r,&c) && l!=0 && r!=0 && c!=0 ) > { > int i,j,k; > char temp; > for(i=0;i<l;i++) > for(j=0;j<r;j++) > for(k=0;k<c;k++) > { > scanf(" %c",&temp); > if(temp == '#') > _map[i][j][k] = false; > if(temp == '.') > _map[i][j][k] = true; > if(temp == 'S') > { > start.x = k; > start.y = j; > start.l = i; > _map[i][j][k] = true; > } > if(temp == 'E') > { > end.x = k; > end.y = j; > end.l = i; > _map[i][j][k] = true; > } > memset(visit,false,sizeof(visit)); > } > int ans = BFS(); > if(ans == -1) > printf("Trapped!\n"); > else > printf("Escaped in %d minute(s).\n",ans); > } > > return 0; > } Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator