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

不知道为什么WA,哪位帮忙看下??给点数据也行……

Posted by 42292624 at 2010-03-23 23:28:18 on Problem 2251
#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:
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