Submission #52088488


Source Code Expand

/**
 *  @the_hyp0cr1t3
 *  06.04.2024 17:42
**/
#include <bits/stdc++.h>

const std::pair<int, int> dirs[] = {{-1, 0}, {0, -1}, {1, 0}, {0, 1}};

int main() {
    std::cin.tie(nullptr)->sync_with_stdio(false);

    int n, m;
    std::cin >> n >> m;
    std::vector<std::string> a(n);
    for (auto &x : a)
        std::cin >> x;

    int sx, sy, tx, ty;
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < m; j++) {
            if (a[i][j] == 'S')
                sx = i, sy = j;
            if (a[i][j] == 'T')
                tx = i, ty = j;
        }
    }

    auto bfs = [&](int rx, int ry) {
        std::vector d(n, std::vector<int>(m, -1));
        d[rx][ry] = 0;

        auto valid = [&](int x, int y) {
            return 0 <= x and x < n and 0 <= y and y < m and a[x][y] != '#';
        };

        std::vector<std::pair<int, int>> q;
        q.emplace_back(rx, ry);
        for (int i = 0; i < q.size(); i++) {
            auto [ux, uy] = q[i];
            for (auto [dx, dy] : dirs) {
                int vx = ux + dx, vy = uy + dy;
                if (valid(vx, vy) and d[vx][vy] == -1) {
                    d[vx][vy] = d[ux][uy] + 1;
                    q.emplace_back(vx, vy);
                }
            }
        }
        return d;
    };

    int start = -1;
    int q;
    std::cin >> q;
    std::vector<std::array<int, 3>> p(q);
    for (int it = 0; auto &[i, j, e] : p) {
        std::cin >> i >> j >> e;
        --i, --j;
        if (i == sx and j == sy)
            start = it;
        it++;
    }
    p.push_back({tx, ty, 0});
    q++;

    if (start == -1) {
        std::cout << "No" << '\n';
        return 0;
    }

    std::swap(p[0], p[start]);

    std::vector<std::vector<int>> g(q);
    for (int i = 0; i < q; i++) {
        auto [x, y, e] = p[i];
        auto d = bfs(x, y);
        for (int j = 0; j < q; j++) {
            auto [nx, ny, ne] = p[j];
            if (~d[nx][ny] and d[nx][ny] <= e)
                g[i].push_back(j);
        }
    }

    std::vector<int> vis(q);
    auto dfs = [&](auto &&self, int u) -> void {
        vis[u] = true;
        for (auto v : g[u])
            if (!vis[v]) self(self, v);
    };
    dfs(dfs, 0);

    std::cout << (vis[q - 1] ? "Yes" : "No") << '\n';
}

Submission Info

Submission Time
Task D - Medicines on Grid
User the_hyp0cr1t3
Language C++ 20 (gcc 12.2)
Score 425
Code Size 2342 Byte
Status AC
Exec Time 237 ms
Memory 4396 KiB

Compile Error

Main.cpp: In lambda function:
Main.cpp:38:27: warning: comparison of integer expressions of different signedness: ‘int’ and ‘std::vector<std::pair<int, int> >::size_type’ {aka ‘long unsigned int’} [-Wsign-compare]
   38 |         for (int i = 0; i < q.size(); i++) {
      |                         ~~^~~~~~~~~~
Main.cpp: In function ‘int main()’:
Main.cpp:62:16: warning: ‘ty’ may be used uninitialized [-Wmaybe-uninitialized]
   62 |     p.push_back({tx, ty, 0});
      |     ~~~~~~~~~~~^~~~~~~~~~~~~
Main.cpp:18:21: note: ‘ty’ was declared here
   18 |     int sx, sy, tx, ty;
      |                     ^~
Main.cpp:62:16: warning: ‘tx’ may be used uninitialized [-Wmaybe-uninitialized]
   62 |     p.push_back({tx, ty, 0});
      |     ~~~~~~~~~~~^~~~~~~~~~~~~
Main.cpp:18:17: note: ‘tx’ was declared here
   18 |     int sx, sy, tx, ty;
      |                 ^~
Main.cpp:58:21: warning: ‘sy’ may be used uninitialized [-Wmaybe-uninitialized]
   58 |         if (i == sx and j == sy)
      |             ~~~~~~~~^~~~~~~~~~~
Main.cpp:18:13: note: ‘sy’ was declared here
   18 |     int sx, sy, tx, ty;
      |             ^~
Main.cpp:58:9: warning: ‘sx’ may be used uninitialized [-Wmaybe-uninitialized]
   58 |         if (i == sx and j == sy)
      |         ^~
Main.cpp:18:9: note: ‘sx’ was declared here
   18 |     int sx, sy, tx, ty;
      |         ^~

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 425 / 425
Status
AC × 3
AC × 53
Set Name Test Cases
Sample example0.txt, example1.txt, example2.txt
All example0.txt, example1.txt, example2.txt, test_00.txt, test_01.txt, test_02.txt, test_03.txt, test_04.txt, test_05.txt, test_06.txt, test_07.txt, test_08.txt, test_09.txt, test_10.txt, test_11.txt, test_12.txt, test_13.txt, test_14.txt, test_15.txt, test_16.txt, test_17.txt, test_18.txt, test_19.txt, test_20.txt, test_21.txt, test_22.txt, test_23.txt, test_24.txt, test_25.txt, test_26.txt, test_27.txt, test_28.txt, test_29.txt, test_30.txt, test_31.txt, test_32.txt, test_33.txt, test_34.txt, test_35.txt, test_36.txt, test_37.txt, test_38.txt, test_39.txt, test_40.txt, test_41.txt, test_42.txt, test_43.txt, test_44.txt, test_45.txt, test_46.txt, test_47.txt, test_48.txt, test_49.txt
Case Name Status Exec Time Memory
example0.txt AC 1 ms 3508 KiB
example1.txt AC 1 ms 3504 KiB
example2.txt AC 1 ms 3640 KiB
test_00.txt AC 46 ms 3888 KiB
test_01.txt AC 22 ms 3864 KiB
test_02.txt AC 41 ms 3896 KiB
test_03.txt AC 64 ms 3904 KiB
test_04.txt AC 30 ms 3828 KiB
test_05.txt AC 26 ms 3820 KiB
test_06.txt AC 42 ms 3900 KiB
test_07.txt AC 77 ms 4044 KiB
test_08.txt AC 52 ms 3892 KiB
test_09.txt AC 45 ms 3748 KiB
test_10.txt AC 53 ms 4200 KiB
test_11.txt AC 116 ms 4396 KiB
test_12.txt AC 206 ms 3964 KiB
test_13.txt AC 134 ms 3864 KiB
test_14.txt AC 137 ms 3784 KiB
test_15.txt AC 110 ms 3900 KiB
test_16.txt AC 81 ms 3900 KiB
test_17.txt AC 132 ms 4028 KiB
test_18.txt AC 197 ms 3840 KiB
test_19.txt AC 34 ms 3876 KiB
test_20.txt AC 237 ms 3948 KiB
test_21.txt AC 125 ms 3804 KiB
test_22.txt AC 142 ms 3912 KiB
test_23.txt AC 219 ms 4116 KiB
test_24.txt AC 45 ms 3940 KiB
test_25.txt AC 10 ms 4072 KiB
test_26.txt AC 75 ms 3852 KiB
test_27.txt AC 113 ms 4288 KiB
test_28.txt AC 109 ms 3856 KiB
test_29.txt AC 69 ms 4140 KiB
test_30.txt AC 199 ms 4044 KiB
test_31.txt AC 66 ms 4028 KiB
test_32.txt AC 1 ms 3696 KiB
test_33.txt AC 1 ms 3496 KiB
test_34.txt AC 1 ms 3436 KiB
test_35.txt AC 1 ms 3508 KiB
test_36.txt AC 1 ms 3556 KiB
test_37.txt AC 2 ms 3868 KiB
test_38.txt AC 2 ms 3932 KiB
test_39.txt AC 2 ms 3932 KiB
test_40.txt AC 2 ms 3872 KiB
test_41.txt AC 2 ms 3740 KiB
test_42.txt AC 2 ms 3832 KiB
test_43.txt AC 2 ms 3848 KiB
test_44.txt AC 2 ms 3804 KiB
test_45.txt AC 2 ms 3868 KiB
test_46.txt AC 1 ms 3864 KiB
test_47.txt AC 2 ms 3760 KiB
test_48.txt AC 2 ms 3792 KiB
test_49.txt AC 1 ms 3588 KiB