8523 2024. 01. 21 00:29:56 kukkerman Hálózati átvitel cpp17 Elfogadva 50/50 164ms 11576 KiB
#include <iostream>
#include <vector>
#include <unordered_set>

using Graf = std::vector<std::vector<std::pair<int, int>>>;

void beolvas(std::istream &be, int &k, int &h, Graf &g) {
    int n, m;
    be >> n >> m >> k >> h;

    g.resize(n);
    while (m-- > 0) {
        int u, v, w;
        be >> u >> v >> w;
        g[u - 1].emplace_back(v - 1, w);
        g[v - 1].emplace_back(u - 1, w);
    }
}

void feldolgoz(int k, int h, const Graf &g) {
    const auto n = g.size();

    std::vector<int> sebessegek(n, -1);
    sebessegek[--k] = 100'001;

    std::unordered_set<int> akt_csomopontok;
    akt_csomopontok.insert(k);
    while (h-- > 0 && !akt_csomopontok.empty()) {
        std::unordered_set<int> uj_csomopontok;

        auto uj_sebessegek = sebessegek;
        for (auto akt : akt_csomopontok) {
            for (auto [szomszed, vonali_sebesseg] : g[akt]) {
                const auto sz_sebesseg = std::min(sebessegek[akt], vonali_sebesseg);
                if (uj_sebessegek[szomszed] < sz_sebesseg) {
                    uj_sebessegek[szomszed] = sz_sebesseg;
                    uj_csomopontok.insert(szomszed);
                }
            }
        }

        akt_csomopontok = std::move(uj_csomopontok);
        sebessegek = std::move(uj_sebessegek);
    }

    sebessegek[k] = 0;
    for (auto s : sebessegek) {
        std::cout << s << '\n';
    }
}

int main() {
    int k, h;
    Graf g;
    beolvas(std::cin, k, h, g);

    feldolgoz(k, h, g);

    return 0;
}
Részfeladat Összpont Teszt Verdikt Idő Memória
base 50/50
1 Elfogadva 0/0 3ms 1812 KiB
2 Elfogadva 0/0 3ms 2044 KiB
3 Elfogadva 1/1 3ms 2152 KiB
4 Elfogadva 1/1 3ms 2352 KiB
5 Elfogadva 2/2 3ms 2452 KiB
6 Elfogadva 2/2 3ms 2464 KiB
7 Elfogadva 2/2 4ms 2484 KiB
8 Elfogadva 2/2 4ms 2760 KiB
9 Elfogadva 1/1 4ms 2760 KiB
10 Elfogadva 1/1 4ms 3236 KiB
11 Elfogadva 1/1 7ms 3208 KiB
12 Elfogadva 1/1 8ms 3452 KiB
13 Elfogadva 2/2 8ms 3348 KiB
14 Elfogadva 2/2 8ms 3568 KiB
15 Elfogadva 2/2 14ms 4228 KiB
16 Elfogadva 2/2 14ms 4588 KiB
17 Elfogadva 2/2 14ms 4820 KiB
18 Elfogadva 2/2 14ms 5192 KiB
19 Elfogadva 2/2 14ms 5476 KiB
20 Elfogadva 2/2 14ms 5492 KiB
21 Elfogadva 1/1 19ms 6504 KiB
22 Elfogadva 1/1 32ms 7144 KiB
23 Elfogadva 1/1 32ms 7796 KiB
24 Elfogadva 1/1 41ms 8500 KiB
25 Elfogadva 2/2 50ms 8932 KiB
26 Elfogadva 2/2 54ms 9480 KiB
27 Elfogadva 2/2 50ms 9896 KiB
28 Elfogadva 2/2 140ms 10584 KiB
29 Elfogadva 2/2 163ms 10644 KiB
30 Elfogadva 2/2 164ms 10920 KiB
31 Elfogadva 2/2 164ms 11296 KiB
32 Elfogadva 2/2 164ms 11576 KiB