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