85232024-01-21 00:29:56kukkermanHálózati átvitelcpp17Elfogadva 50/50164ms11576 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ÖsszpontTesztVerdiktIdőMemória
base50/50
1Elfogadva0/03ms1812 KiB
2Elfogadva0/03ms2044 KiB
3Elfogadva1/13ms2152 KiB
4Elfogadva1/13ms2352 KiB
5Elfogadva2/23ms2452 KiB
6Elfogadva2/23ms2464 KiB
7Elfogadva2/24ms2484 KiB
8Elfogadva2/24ms2760 KiB
9Elfogadva1/14ms2760 KiB
10Elfogadva1/14ms3236 KiB
11Elfogadva1/17ms3208 KiB
12Elfogadva1/18ms3452 KiB
13Elfogadva2/28ms3348 KiB
14Elfogadva2/28ms3568 KiB
15Elfogadva2/214ms4228 KiB
16Elfogadva2/214ms4588 KiB
17Elfogadva2/214ms4820 KiB
18Elfogadva2/214ms5192 KiB
19Elfogadva2/214ms5476 KiB
20Elfogadva2/214ms5492 KiB
21Elfogadva1/119ms6504 KiB
22Elfogadva1/132ms7144 KiB
23Elfogadva1/132ms7796 KiB
24Elfogadva1/141ms8500 KiB
25Elfogadva2/250ms8932 KiB
26Elfogadva2/254ms9480 KiB
27Elfogadva2/250ms9896 KiB
28Elfogadva2/2140ms10584 KiB
29Elfogadva2/2163ms10644 KiB
30Elfogadva2/2164ms10920 KiB
31Elfogadva2/2164ms11296 KiB
32Elfogadva2/2164ms11576 KiB