10313 2024. 03. 30 15:05:40 MagyarKendeSZLG Labirintus cpp17 Időlimit túllépés 15/100 2.099s 54796 KiB
#include "labirintus.h"
#include <queue>
#include <array>

std::vector<std::vector<int>> l;
constexpr int dx[] = {1, -1, 0, 0}, dy[] = {0, 0, 1, -1};
int r, c;


void init_labyrinth(int R, int C, std::vector<std::vector<int>> L) {
    l = L;
    r = R;
    c = C;
}

bool can_escape(int N, std::vector<int> U, std::vector<int> V) {

    for (int i = 0; i < N; i++) {
        l[U[i]][V[i]] = 1;
    }

    std::vector<std::vector<bool>> vis(r, std::vector<bool>(c));
    std::queue<std::array<int, 2>> q({{0, 0}});
    vis[0][0] = 1;

    while (!q.empty()) {
        auto [x, y] = q.front(); q.pop();

        if (x == c - 1 && y == r - 1) {
            for (int i = 0; i < N; i++) {
                l[U[i]][V[i]] = 0;
            };
            return true;
        }

        for (int i = 0; i < 4; i++) {
            int nx = x + dx[i], ny = y + dy[i];
            if (nx < 0 || ny < 0 || nx >= c || ny >= r || l[ny][nx]) {
                continue;
            }
            if (!vis[ny][nx]) {
                vis[ny][nx] = 1;
                q.push({nx, ny});
            }
        }
    }

    for (int i = 0; i < N; i++) {
        l[U[i]][V[i]] = 0;
    }

    return false;
}
Részfeladat Összpont Teszt Verdikt Idő Memória
subtask1 0/0
1 Elfogadva 3ms 1480 KiB
2 Időlimit túllépés 2.099s 14040 KiB
subtask2 15/15
3 Elfogadva 54ms 3892 KiB
4 Elfogadva 28ms 4348 KiB
5 Elfogadva 108ms 6784 KiB
6 Elfogadva 111ms 9196 KiB
7 Elfogadva 68ms 12016 KiB
8 Elfogadva 70ms 14116 KiB
subtask3 0/18
9 Időlimit túllépés 2.061s 14372 KiB
10 Elfogadva 593ms 17452 KiB
11 Időlimit túllépés 2.066s 29888 KiB
12 Időlimit túllépés 2.072s 30864 KiB
13 Időlimit túllépés 2.072s 32020 KiB
14 Időlimit túllépés 2.069s 32944 KiB
subtask4 0/28
15 Elfogadva 867ms 49384 KiB
16 Elfogadva 773ms 51648 KiB
17 Elfogadva 435ms 52868 KiB
18 Elfogadva 358ms 52876 KiB
19 Időlimit túllépés 2.078s 40840 KiB
20 Elfogadva 87ms 52944 KiB
21 Elfogadva 138ms 52900 KiB
22 Időlimit túllépés 2.062s 40852 KiB
23 Időlimit túllépés 2.056s 40836 KiB
subtask5 0/39
24 Elfogadva 37ms 29688 KiB
25 Elfogadva 18ms 29564 KiB
26 Elfogadva 108ms 29828 KiB
27 Elfogadva 111ms 29776 KiB
28 Elfogadva 108ms 30076 KiB
29 Elfogadva 111ms 29996 KiB
30 Időlimit túllépés 2.075s 41364 KiB
31 Időlimit túllépés 2.053s 41496 KiB
32 Időlimit túllépés 2.072s 41536 KiB
33 Időlimit túllépés 2.065s 41552 KiB
34 Időlimit túllépés 2.069s 41864 KiB
35 Időlimit túllépés 2.065s 41928 KiB
36 Elfogadva 228ms 54224 KiB
37 Elfogadva 439ms 54136 KiB
38 Elfogadva 188ms 54672 KiB
39 Elfogadva 642ms 54796 KiB