6678 2023. 12. 15 22:43:16 anon Villanyautó cpp17 Elfogadva 60/60 731ms 4272 KiB
#include <bits/stdc++.h>
#define FastIO ios::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL)
#define all(x) x.begin(), x.end()
typedef long long ll;
using namespace std;
const ll INF = ~(1LL << 63);
ll N, M, K;
bool walk(ll node, ll C, vector<vector<array<ll, 2>>> &G) {
    ll i;
    unordered_set<ll> vis(N);
    vector<array<ll, 2>> best(N + 1, { -1, -1 });
    queue<array<ll, 3>> q;
    q.push({ node, K, 0 });
    while(!q.empty()) {
        array<ll, 3> cs = q.front();
        q.pop();
        vis.insert(cs[0]);
        if(vis.size() == N)
            return true;
        if(best[cs[0]][0] != -1 && (best[cs[0]][0] > cs[1] || (best[cs[0]][0] == cs[1] && best[cs[0]][1] >= cs[2])))
            continue;
        best[cs[0]][0] = cs[1];
        best[cs[0]][1] = cs[2];
        for(const auto &x : G[cs[0]]) {
            if(x[1] <= cs[2])
                q.push({ x[0], cs[1], cs[2] - x[1] });
            else if(x[1] <= C && cs[1] > 0)
                q.push({ x[0], cs[1] - 1, C - x[1] });
        }
    }
    return vis.size() == N;
}
int main() {
    FastIO;
    ll i, n1, n2, C, bsmin, bsmax;
    cin >> N >> M >> K;
    vector<vector<array<ll, 2>>> G(N + 1);
    bsmin = INF;
    bsmax = 0;
    for(i = 0; i < M; i++) {
        cin >> n1 >> n2 >> C;
        G[n1].push_back({ n2, C });
        G[n2].push_back({ n1, C });
        bsmin = min(C, bsmin);
        bsmax += C;
    }
    while(bsmin != bsmax - 1) {
        C = bsmin + (bsmax - bsmin) / 2;
        for(i = 1; i <= N; i++) {
            if(!walk(i, C, G)) {
                bsmin = C;
                goto next;
            }
        }
        bsmax = C;
        next:;
    }
    cout << bsmax << '\n';
    return 0;
}

Részfeladat Összpont Teszt Verdikt Idő Memória
base 60/60
1 Elfogadva 0/0 3ms 1832 KiB
2 Elfogadva 0/0 731ms 2540 KiB
3 Elfogadva 1/1 27ms 2400 KiB
4 Elfogadva 1/1 32ms 2708 KiB
5 Elfogadva 1/1 35ms 3116 KiB
6 Elfogadva 2/2 128ms 2808 KiB
7 Elfogadva 2/2 167ms 3320 KiB
8 Elfogadva 2/2 263ms 3676 KiB
9 Elfogadva 1/1 6ms 3032 KiB
10 Elfogadva 1/1 4ms 3108 KiB
11 Elfogadva 1/1 4ms 3184 KiB
12 Elfogadva 2/2 20ms 3204 KiB
13 Elfogadva 2/2 12ms 3344 KiB
14 Elfogadva 2/2 8ms 3192 KiB
15 Elfogadva 3/3 12ms 3412 KiB
16 Elfogadva 3/3 82ms 3796 KiB
17 Elfogadva 2/2 14ms 3432 KiB
18 Elfogadva 2/2 32ms 3672 KiB
19 Elfogadva 2/2 35ms 3688 KiB
20 Elfogadva 2/2 41ms 3852 KiB
21 Elfogadva 2/2 97ms 3580 KiB
22 Elfogadva 2/2 10ms 3504 KiB
23 Elfogadva 3/3 64ms 3508 KiB
24 Elfogadva 3/3 160ms 3836 KiB
25 Elfogadva 3/3 167ms 3992 KiB
26 Elfogadva 3/3 254ms 4272 KiB
27 Elfogadva 3/3 558ms 3824 KiB
28 Elfogadva 3/3 78ms 3516 KiB
29 Elfogadva 3/3 64ms 3792 KiB
30 Elfogadva 3/3 96ms 3860 KiB