103132024-03-30 15:05:40MagyarKendeSZLGLabirintuscpp17Időlimit túllépés 15/1002.099s54796 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ÖsszpontTesztVerdiktIdőMemória
subtask10/0
1Elfogadva3ms1480 KiB
2Időlimit túllépés2.099s14040 KiB
subtask215/15
3Elfogadva54ms3892 KiB
4Elfogadva28ms4348 KiB
5Elfogadva108ms6784 KiB
6Elfogadva111ms9196 KiB
7Elfogadva68ms12016 KiB
8Elfogadva70ms14116 KiB
subtask30/18
9Időlimit túllépés2.061s14372 KiB
10Elfogadva593ms17452 KiB
11Időlimit túllépés2.066s29888 KiB
12Időlimit túllépés2.072s30864 KiB
13Időlimit túllépés2.072s32020 KiB
14Időlimit túllépés2.069s32944 KiB
subtask40/28
15Elfogadva867ms49384 KiB
16Elfogadva773ms51648 KiB
17Elfogadva435ms52868 KiB
18Elfogadva358ms52876 KiB
19Időlimit túllépés2.078s40840 KiB
20Elfogadva87ms52944 KiB
21Elfogadva138ms52900 KiB
22Időlimit túllépés2.062s40852 KiB
23Időlimit túllépés2.056s40836 KiB
subtask50/39
24Elfogadva37ms29688 KiB
25Elfogadva18ms29564 KiB
26Elfogadva108ms29828 KiB
27Elfogadva111ms29776 KiB
28Elfogadva108ms30076 KiB
29Elfogadva111ms29996 KiB
30Időlimit túllépés2.075s41364 KiB
31Időlimit túllépés2.053s41496 KiB
32Időlimit túllépés2.072s41536 KiB
33Időlimit túllépés2.065s41552 KiB
34Időlimit túllépés2.069s41864 KiB
35Időlimit túllépés2.065s41928 KiB
36Elfogadva228ms54224 KiB
37Elfogadva439ms54136 KiB
38Elfogadva188ms54672 KiB
39Elfogadva642ms54796 KiB