231322026-01-16 12:58:56MagyarKendeSZLGVillanyautócpp17Hibás válasz 8/60289ms564 KiB
#include <bits/stdc++.h>
using namespace std;
#define int int64_t

const int INF = 1e12;

int32_t main() {
    cin.tie(0), ios::sync_with_stdio(0);
    int n, m, k;
    cin >> n >> m >> k;
    vector<vector<array<int, 2>>> g(n + 1);
    while (m--) {
        int u, v, w;
        cin >> u >> v >> w;
        g[u].push_back({v, w});
        g[v].push_back({u, w});
    }

    auto check = [&](int start, int cap) -> bool {
        auto calc = [&](int ch, int cp,
                        int w) -> array<int, 2> {
            if (w > cap) return {INF, INF};
            if (cp + w <= cap) return {ch, cp + w};
            return {ch + 1, 0};
        };
        using state = array<int, 3>;
        priority_queue<state, vector<state>, greater<state>>
            pq;
        vector<array<int, 2>> dist(n + 1, {INF, INF});
        dist[start] = {0, 0};
        pq.push({0, 0, start});
        while (!pq.empty()) {
            auto [ch, cp, u] = pq.top();
            pq.pop();
            if (dist[u][0] != ch || dist[u][1] != cp) {
                continue;
            }
            for (auto [v, w] : g[u]) {
                auto nc = calc(ch, cp, w);
                if (nc < dist[v]) {
                    dist[v] = nc;
                    pq.push({nc[0], nc[1], v});
                }
            }
        }
        for (int i = 1; i <= n; i++) {
            if (dist[i][0] > k) return 0;
        }
        return 1;
    };
    auto f = [&](int cap) -> bool {
        for (int start = 1; start <= n; start++) {
            if (!check(start, cap)) return 0;
        }
        return 1;
    };

    int l = 0, r = INF;
    while (r - l > 1) {
        int mid = (l + r) / 2;
        if (f(mid)) {
            r = mid;
        } else {
            l = mid;
        }
    }
    cout << r << "\n";
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base8/60
1Elfogadva0/01ms316 KiB
2Elfogadva0/097ms316 KiB
3Hibás válasz0/120ms316 KiB
4Hibás válasz0/143ms316 KiB
5Hibás válasz0/156ms316 KiB
6Hibás válasz0/279ms448 KiB
7Hibás válasz0/2165ms316 KiB
8Hibás válasz0/2289ms564 KiB
9Hibás válasz0/117ms316 KiB
10Hibás válasz0/18ms424 KiB
11Hibás válasz0/16ms316 KiB
12Hibás válasz0/268ms316 KiB
13Hibás válasz0/243ms432 KiB
14Hibás válasz0/219ms316 KiB
15Hibás válasz0/350ms316 KiB
16Hibás válasz0/3107ms508 KiB
17Hibás válasz0/210ms316 KiB
18Hibás válasz0/241ms316 KiB
19Hibás válasz0/243ms552 KiB
20Hibás válasz0/250ms504 KiB
21Elfogadva2/217ms508 KiB
22Hibás válasz0/28ms316 KiB
23Hibás válasz0/339ms316 KiB
24Hibás válasz0/3160ms512 KiB
25Hibás válasz0/3150ms316 KiB
26Hibás válasz0/3234ms564 KiB
27Elfogadva3/396ms316 KiB
28Hibás válasz0/346ms500 KiB
29Hibás válasz0/339ms316 KiB
30Elfogadva3/348ms440 KiB