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

求大神看看,为什么会超时

Posted by zs20154049 at 2016-03-31 22:54:24 on Problem 2251
#include<stdio.h>
#include<string.h>
#include<queue>
using namespace std;
char s[50][50][50];
int book[50][50][50];
struct node
{
    int x, y, z;
    int step;
}t, l;
int main()
{
    //freopen("in.txt", "r", stdin);
    int a, b, c;
    while (scanf("%d %d %d", &a, &b, &c) != EOF && (a != 0 || b != 0 || c != 0)) {
        scanf(" ");
        memset(book, 0, sizeof(book));
        for (int i = 0; i < a; i++) {
            for (int j = 0; j <= b; j++) {
                gets(s[i][j]);
                for (int k = 0; k < c; k++) {
                    if (s[i][j][k] == 'S') {
                        t.x = i;
                        t.y = j;
                        t.z = k;
                        t.step = 0;
                        book[t.x][t.y][t.z] = 1;
                        break;
                    }
                }
            }
        }
        queue <node> que;
        /*while (!que.empty()) {
            que.pop();
        }*/
        que.push(t);
        int flag = 0;
        while (!que.empty()) {
            t = que.front();
            que.pop();
            if (s[t.x][t.y][t.z] == 'E') {
                flag = 1;
                printf("Escaped in %d minute(s).\n", t.step);
                break;
            }
            if (t.x-1 >= 0) {
                l = t;
                l.x--;
                l.step++;
                if (s[l.x][l.y][l.z] != '#' && book[l.x][l.y][l.z] == 0) {
                    book[l.x][l.y][l.z] == 1;
                    que.push(l);
                }
            }
            if (t.x+1 < a) {
                l = t;
                l.x++;
                l.step++;
                if (s[l.x][l.y][l.z] != '#' && book[l.x][l.y][l.z] == 0) {
                    book[l.x][l.y][l.z] == 1;
                    que.push(l);
                }
            }
            if (t.y-1 >= 0) {
                l = t;
                l.y--;
                l.step++;
                if (s[l.x][l.y][l.z] != '#' && book[l.x][l.y][l.z] == 0) {
                    book[l.x][l.y][l.z] == 1;
                    que.push(l);
                }
            }
            if (t.y+1 < b) {
                l = t;
                l.y++;
                l.step++;
                if (s[l.x][l.y][l.z] != '#' && book[l.x][l.y][l.z] == 0) {
                    book[l.x][l.y][l.z] == 1;
                    que.push(l);
                }
            }
            if (t.z-1 >= 0) {
                l = t;
                l.z--;
                l.step++;
                if (s[l.x][l.y][l.z] != '#' && book[l.x][l.y][l.z] == 0) {
                    book[l.x][l.y][l.z] == 1;
                    que.push(l);
                }
            }
            if (t.z+1 < c) {
                l = t;
                l.z++;
                l.step++;
                if (s[l.x][l.y][l.z] != '#' && book[l.x][l.y][l.z] == 0) {
                    book[l.x][l.y][l.z] == 1;
                    que.push(l);
                }
            }
        }
        if (!flag) {
            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