Online JudgeProblem SetAuthorsOnline ContestsUser
Web Board
Home Page
F.A.Qs
Statistical Charts
Problems
Submit Problem
Online Status
Prob.ID:
Register
Update your info
Authors ranklist
Current Contest
Past Contests
Scheduled Contests
Award Contest
User ID:
Password:
  Register

Re:为什么总是RE呢?高手来看下呀

Posted by pansongsong at 2010-08-05 16:44:27 on Problem 2251
In Reply To:为什么总是RE呢?高手来看下呀 Posted by:zzczzc004 at 2008-08-06 17:44:23
> 如果去掉queue的头文件,自己写个队列就能过,为什么会这样?
> 
> #include<stdio.h>
> #include<stdlib.h>
> #include<memory.h>
> #include<queue.h>
> 
> bool way[31][31][31],visited[31][31][31];
> int start_x,start_y,start_z,end_x,end_y,end_z;
> /*class queue
> {
> private:
>     int a[100000];
>     int head,rear,size;
> public:
>     queue(){
>         head=0,rear=0,size=0;
>     }
>     void push(int x){
>         a[rear]=x;
>         rear=(rear+1)%100000;
>         size++;
>     }
>     int front(){
>         return a[head];
>     }    
>     int empty(){
>         return size==0;
>     }
>     void pop(){
>         head=(head+1)%100000;
>         size--;
>     }  
> };
> */
> queue<int> q1_x,q1_y,q1_z,q2_x,q2_y,q2_z;
> 
> int bfs()
> {
>     int n=0,i,x,y,z;
>     q1_x.push(start_x);
>     q1_y.push(start_y);
>     q1_z.push(start_z);
>     while(!q1_x.empty()){
>         while(!q1_x.empty()){
>             x=q1_x.front();
>             y=q1_y.front();
>             z=q1_z.front();
>             q1_x.pop();
>             q1_y.pop();
>             q1_z.pop();
>             if(x==end_x && y==end_y && z==end_z){
>                 printf("Escaped in %d minute(s).\n",n);
>                 return 1;
>             }
>             for(i=-1;i<=1;i++){
>                 if(way[x][y+i][z] && visited[x][y+i][z]){
>                     visited[x][y+i][z]=false;
>                     q2_x.push(x);
>                     q2_y.push(y+i);
>                     q2_z.push(z);
>                 }
>                 if(way[x][y][z+i] && visited[x][y][z+i]){
>                     visited[x][y][z+i]=false;
>                     q2_x.push(x);
>                     q2_y.push(y);
>                     q2_z.push(z+i);
>                 }
>                 if(way[x+i][y][z] && visited[x+i][y][z]){
>                     visited[x+i][y][z]=false;
>                     q2_x.push(x+i);
>                     q2_y.push(y);
>                     q2_z.push(z);
>                 }
>             }
>         }
>         while(!q2_x.empty()){
>             q1_x.push(q2_x.front());
>             q2_x.pop();
>             q1_y.push(q2_y.front());
>             q2_y.pop();
>             q1_z.push(q2_z.front());
>             q2_z.pop();
>         }
>         n++;
>     }
>     return 0;
> }
> int main()
> {
>     int l,r,c,i,j,k;
>     char s;
>     while(scanf("%d %d %d",&l,&r,&c)!=EOF,l|r|c){
>         memset(way,false,sizeof(way));
>         memset(visited,true,sizeof(visited));
>         while(!q1_x.empty()){          
>             q1_x.pop();        
>             q1_y.pop();
>             q1_z.pop();
>         }
>         while(!q2_x.empty()){          
>             q2_x.pop();        
>             q2_y.pop();
>             q2_z.pop();
>         }
>         for(i=1;i<=l;i++){
>             for(j=1;j<=r;j++){
>                 for(k=1;k<=c;k++){
>                     scanf(" %c",&s);
>                     if(s=='.')
>                         way[i][j][k]=true;
>                     else{
>                         if(s=='S'){
>                             start_x=i,start_y=j,start_z=k;
>                             visited[i][j][k]=false;
>                         }
>                         if(s=='E'){
>                             end_x=i,end_y=j,end_z=k;
>                             way[i][j][k]=true;
>                         }
>                     }
>                 }
>             }
>         }
>         if(!bfs()){
>             printf("Trapped!\n");
>         }
>     }
>     return 0;
> }

Followed by:

Post your reply here:
User ID:
Password:
Title:

Content:

Home Page   Go Back  To top


All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator