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

贡献n次WA,一定记得把队列给清空!!!!贴代码~~~

Posted by yingxiang720 at 2011-03-22 16:34:35 on Problem 2251
#include <iostream>
#include <queue>
using namespace std;

char ddd[31][31][31];
int flag;
int l,r,c;

struct xyz
{
    int x;
    int y;
    int z;
}s,e;

struct cd
{
    int vis;
    int num;
    int x;
    int y;
    int z;
}cddd[31][31][31];

void init()
{
    for(int i = 0;i < 31;i++)
        for(int j = 0;j < 31;j++)
            for(int k = 0;k < 31;k++)
            {
                cddd[i][j][k].num = 0;
                cddd[i][j][k].vis = 0;
                cddd[i][j][k].x = i;
                cddd[i][j][k].y = j;
                cddd[i][j][k].z = k;
            }
    flag = 0;
}

int main()
{
    int i,j,k;
    queue <cd> q;
    while(scanf("%d%d%d",&l,&r,&c) != EOF && l != 0&&r != 0&&c != 0)
    {
        init();
        for(i = 0;i < l;i++)
            for(j = 0;j < r;j++)
            {
                scanf("%s",ddd[i][j]);
                for(k = 0;k < c;k++)
                {
                    if(ddd[i][j][k] == 'S')
                    {
                        s.x = i;
                        s.y = j;
                        s.z = k;
                    }
                    if(ddd[i][j][k] == 'E')
                    {
                        e.x = i;
                        e.y = j;
                        e.z = k;
                    }
                }
            }
        q.push(cddd[s.x][s.y][s.z]);
        cddd[s.x][s.y][s.z].vis = 1;
        while(!q.empty())
        {
            cd front = q.front();
            int cx = front.x;
            int cy = front.y;
            int cz = front.z;
            if(cddd[e.x][e.y][e.z].vis)
            {
                flag = 1;
                break;
            }
            q.pop();
            if(!cddd[cx + 1][cy][cz].vis && cx + 1 < l && ddd[cx + 1][cy][cz] == '.' || ddd[cx + 1][cy][cz] == 'E')
            {
                q.push(cddd[cx + 1][cy][cz]);
                cddd[cx + 1][cy][cz].num += cddd[cx][cy][cz].num + 1;
                cddd[cx + 1][cy][cz].vis = 1;
            }
            if(!cddd[cx - 1][cy][cz].vis && cx - 1 >= 0 && ddd[cx - 1][cy][cz] == '.' || ddd[cx - 1][cy][cz] == 'E')
            {
                q.push(cddd[cx - 1][cy][cz]);
                cddd[cx - 1][cy][cz].num += cddd[cx][cy][cz].num + 1;
                cddd[cx - 1][cy][cz].vis = 1;
            }
            if(!cddd[cx][cy + 1][cz].vis && cy + 1 < r && ddd[cx][cy + 1][cz] == '.' || ddd[cx][cy + 1][cz] == 'E')
            {
                q.push(cddd[cx][cy + 1][cz]);
                cddd[cx][cy + 1][cz].num += cddd[cx][cy][cz].num + 1;
                cddd[cx][cy + 1][cz].vis = 1;
            }
            if(!cddd[cx][cy - 1][cz].vis && cy - 1 >= 0 && ddd[cx][cy - 1][cz] == '.' || ddd[cx][cy - 1][cz] == 'E')
            {
                q.push(cddd[cx][cy - 1][cz]);
                cddd[cx][cy - 1][cz].num += cddd[cx][cy][cz].num + 1;
                cddd[cx][cy - 1][cz].vis = 1;
            }
            if(!cddd[cx][cy][cz + 1].vis && cz + 1 < c && ddd[cx][cy][cz + 1] == '.' || ddd[cx][cy][cz + 1] == 'E')
            {
                q.push(cddd[cx][cy][cz + 1]);
                cddd[cx][cy][cz + 1].num += cddd[cx][cy][cz].num + 1;
                cddd[cx][cy][cz + 1].vis = 1;
            }
            if(!cddd[cx][cy][cz - 1].vis && cz - 1 >= 0 && ddd[cx][cy][cz - 1] == '.' || ddd[cx][cy][cz - 1] == 'E')
            {
                q.push(cddd[cx][cy][cz - 1]);
                cddd[cx][cy][cz - 1].num += cddd[cx][cy][cz].num + 1;
                cddd[cx][cy][cz - 1].vis = 1;
            }
        }
        while(!q.empty())     q.pop();
        if(flag)
            printf("Escaped in %d minute(s).\n",cddd[e.x][e.y][e.z].num);
        else
            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