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

用stl里面queue刷的第一道题目!附代码!

Posted by chenxuan123456789 at 2012-11-04 10:04:35 on Problem 2251
#include <iostream>
#include <string.h>
#include <stdio.h>
#include <queue>
using namespace std;
const int size = 50;
struct Node
{
       int x,y,z,time;
};
int sx,sy,sz;
int drection[6][3]={{1,0,0},{-1,0,0},{0,1,0},{0,-1,0},{0,0,1},{0,0,-1}};
class poj2251
{
      private:
              char maze[size][size][size];
              int visited[size][size][size];
      public:
             int X,Y,Z;
             void input();
             int  result();
};
void poj2251::input()
{
     memset(visited,0,sizeof(visited));
     for(int i=1;i<=X;i++)
     {
             for(int j=1;j<=Y;j++)
             {
                     for(int k=1;k<=Z;k++)
                     {
                             cin>>maze[i][j][k];
                             if(maze[i][j][k]=='S')
                             {
                                                   sx=i;
                                                   sy=j;
                                                   sz=k;
                             }
                     }
             }
     }
}
int poj2251::result()
{
     Node t;
     t.x=sx;
     t.y=sy;
     t.z=sz;
     t.time=0;
     visited[t.x][t.y][t.z]=1;
     queue<Node> p;
     p.push(t);
     while(!p.empty())
     {
                      Node temp1,temp2;
                      temp1=p.front();
                      p.pop();
                      for(int i=0;i<6;i++)
                      {
                              temp2.x=temp1.x+drection[i][0];
                              temp2.y=temp1.y+drection[i][1];
                              temp2.z=temp1.z+drection[i][2];
                              temp2.time=temp1.time+1;
                              if(!visited[temp2.x][temp2.y][temp2.z]&&maze[temp2.x][temp2.y][temp2.z]!='#'
								  &&temp2.x>=1&&temp2.x<=X&&temp2.y>=1&&temp2.y<=Y&&temp2.z>=1&&temp2.z<=Z)
                              {
                              if(maze[temp2.x][temp2.y][temp2.z]=='E')
                              return temp2.time;
                              visited[temp2.x][temp2.y][temp2.z]=1;
                              p.push(temp2);
                              }
                      }
     }
     return -1;
}
int main()
{
    poj2251 t;
    while(scanf("%d %d %d",&t.X,&t.Y,&t.Z)!=EOF)
    {
                    if(t.X==0&&t.Y==0&&t.Z==0)
                    break;
                    t.input();
                    int times=t.result();
                    if(times==-1)
                    printf("Trapped!\n");
                    else
                    printf("Escaped in %d minute(s).\n",times);
    }
    return 1;
}

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